我正在php中運行非常長的任務。這是一個網站爬蟲,它必須有禮貌,每頁睡眠5秒,以防止服務器超載。腳本開頭爲:爲什麼PHP腳本可能會停止?
ignore_user_abort(1);
session_write_close();
ob_end_clean();
while (@ob_end_flush());
set_time_limit(0);
ini_set('max_execution_time',0);
幾小時後(3-7h之間)腳本死亡,沒有任何明顯的原因。 我檢查
- Apache的錯誤日誌(無)
- php_errors.log(無)
- 輸出誤差(調試輸出的10 578 467B,沒有錯誤)
- 內存消耗(穩定,大約3M從
memory_get_usage(true)
每5秒檢查一次,限制設爲512M)
這不是瀏覽器,因爲我用的是wget和chrome來檢查類似的原因。 輸出每2-3秒發送到瀏覽器,所以我不認爲這是故障+我忽略用戶中止。
是否有其他地方我可以檢查發現問題?
如果它運行在Apache容器(mod_php)中,我可以想象它最終會在不通知你的情況下終止進程:) –
你可以單獨運行它嗎(在Apache之外)? – Thilo
如何做到這一點部分?掃描500-1000鏈接,然後用一些參數調用相同的腳本以偏移量開始 –