just put something what I need. Forgive my poor English!

2008年1月20日 星期日

PHP: ignore_user_abort() 執行 PHP 程式直到結束,不理會 timeout

作者: buganini (霸格尼尼) 看板: PHP
標題: [閒聊] ignore_user_abort()
時間: Sat May 19 05:41:35 2007


ignore_user_abort()

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

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

用exec()執行外部程式
mencoder
ffmpeg
imagemagick
之類的

其中視訊檔的縮圖,是先用
mencoder轉flv
再用ffmpeg從flv弄出jpg

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

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

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

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

沒有留言:

張貼留言