2007年5月21日 星期一

ignore_user_abort()

這函式似乎很少看到...
以前也沒用過
但今天用上了
事情是這樣發生的...

弄了一個空間
讓人用FTP上傳檔案
Web部分,作檔案瀏覽的介面
對於圖檔/視訊檔,作縮圖,並且視訊檔會轉成flv提供線上播放
作縮圖和轉flv都是
轉檔的動作都寫在thumb.php裡

用exec()執行外部程式再用ffmpeg從flv弄出jpg

但發現有的大一點的視訊檔
圖檔會生不出來
去翻存那些轉出來檔案的資料夾
發現只有flv

原因是
轉flv時轉檔轉太久
timeout後(或完成前使用者離開這一頁)browser放棄了,並告訴server不要檔案了
然後這個php沒執行完就被中斷了
所以弄出jpg檔的動作沒做到

後來用以下兩行解決
ignore_user_abort(true);
set_time_limit(0);

ignore_user_abort()可以讓php不會被中斷
於是一系列動作都會乖乖的執行完

=>
1.透過這函式應能寫出類似 crontab 的功能
2.發較大量信件的時候萬一使用或者瀏覽器中斷,發送動作還是會繼續做完.
mencoder
ffmpeg
imagemagick
之類的

其中視訊檔的縮圖,是先用
mencoder轉flv

沒有留言:

網誌存檔

關於我自己

Aspire freedom , Hope to do Soming make self complete ~