0
我在使用cronjob的共享服務器上運行非常慢的PHP腳本。 (該腳本執行暫時在服務器上執行的一些HTTP請求......它在〜15-20秒內完成執行。)以非阻塞模式從cronjob執行PHP腳本
問題是,cronjob不時終止,幫助臺的共享服務器告訴我,它不應該連續運行超過5秒。
所以我認爲(在開始認真優化任務之前)執行腳本並在腳本繼續運行時立即返回。直到現在我想到了兩種方法:
- Cronjob不會等待PHP腳本完成它的工作。
- Cronjob將執行一個虛擬的PHP腳本,它將調用主PHP腳本並立即返回,而無需等待第二個腳本返回。
我讀過有關在網絡上,尤其是在這個網站上這兩個選項,並沒有發現的東西,真正起作用:multi_curl沒有做任何事情,如果立即將第一個腳本完成...
提前致謝。
編輯與可能的解決方案我剛剛想出了:
header("Content-Length: 0");
header("Connection: close");
flush();
$mainUrl = 'mySecondScript.php';
$active= null;
$mch = curl_multi_init();
$ch1 = curl_init($mainUrl);
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_multi_add_handle($mch, $ch1);
$resultCurl = curl_multi_exec($mch, $active);
do {
$resultCurl = curl_multi_exec($mch, $active);
} while ($resultCurl == CURLM_CALL_MULTI_PERFORM);
它可能類似的代碼,你可能熟悉這裏或從網上其他地方 - 但它不會,如果我的工作像其他人爲我寫的那樣使用它 - 只有這樣!
感謝Michoel,我我之前試過它,並且由於某種原因它導致了大約50次循環調用我的第一個腳本 - 這是一個我無法解釋的現象(我所有的第一個腳本工作都在調用第二個腳本,但它沒有。) 反正其間我我認爲我發現了一個髒兮兮的解決方案,這個解決方案是由我之前使用過的兩個快照合成的(兩者都沒有像現在這樣工作),我會編輯我的第一條消息,也許它會幫助其他人或者可以改進我的修復。 – Yizhar