[英]Run a PHP-script from a PHP-script without blocking
我正在構建一個蜘蛛,它將遍歷各個站點並對其進行數據挖掘。
由於我需要單獨獲取每個頁面,這可能需要很長時間(可能是100頁)。 我已經將set_time_limit設置為每頁2分鍾,但似乎apache會在5分鍾后殺死腳本,無論如何。
這通常不是問題,因為這將從cron或類似的東西運行,沒有這個時間限制。 但是我也希望管理員能夠通過HTTP接口手動啟動提取。
apache在整個持續時間內保持活動並不重要,我將使用AJAX觸發一次獲取,並在一段時間內使用AJAX進行檢查。
我的問題是如何從PHP腳本中啟動提取,而不會在調用它的腳本終止時終止提取。
也許我可以使用system('script.php&'),但我不確定它是否能解決問題。 還有其他想法嗎?
$cmd = "php myscript.php $params > /dev/null 2>/dev/null &";
# when we call this particular command, the rest of the script
# will keep executing, not waiting for a response
shell_exec($cmd);
這樣做是將所有STDOUT和STDERR發送到/ dev / null,並且腳本繼續執行。 即使'parent'腳本在myscript.php之前完成,myscript.php也會完成執行。
如果你不想使用exec你可以使用php內置函數!
ignore_user_abort(true);
即使瀏覽器和服務器之間的連接斷開,這也會告訴腳本恢復;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.