cronjob を使用して、共有サーバーで非常に遅い PHP スクリプトを実行しています。(スクリプトは、サーバーでの実行を時々中断するいくつかの HTTP 要求を実行します...実行は ~15 ~ 20 秒で完了します。)
問題は、cronjob がときどき終了することです。共有サーバーのヘルプ デスクから、5 秒以上連続して実行しないように言われました。
だから私は(深刻な最適化タスクに入る前に)スクリプトを実行し、スクリプトの実行中にすぐに戻ることを考えました。今まで私は2つの方法を考えていました:
- Cronjob は、PHP スクリプトがジョブを完了するのを待ちません。
- Cronjob はダミーの PHP スクリプトを実行します。このスクリプトはメインの PHP スクリプトを呼び出し、2 番目のスクリプトが戻るのを待たずにすぐに戻ります。
Web と特にこの Web サイトで両方のオプションについて読みましたが、実際に機能するものは見つかりませんでした。最初のスクリプトがすぐに終了すると、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);
ここやウェブのどこかでおなじみのコードに似ているかもしれませんが、他の人が私のために書いたように使用すると機能しません。