簡體   English   中英

從PHP腳本運行PHP腳本而不會阻塞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM