1. ホーム
  2. php

[解決済み] 長時間稼働するPHPスクリプトを管理する最良の方法とは?

2023-05-20 04:14:06

質問

完了までに長い時間 (5~30分) を要する PHP スクリプトがあります。念のため説明すると、このスクリプトは他のサーバーからデータをスクレイピングするために curl を使用しています。これは、処理する前に各ページがロードされるのを待ち、次のページに移動する必要があるため、非常に時間がかかる理由です。

私は、スクリプトを開始し、それが完了するまで放っておくことができるようにしたいのですが、これはデータベース テーブルにフラグを設定します。

私が知る必要があるのは、スクリプトの実行が終了する前に http リクエストを終了させることができる方法です。また、これを行うには、PHP スクリプトが最良の方法でしょうか?

どのように解決するのですか?

確かにそれは PHP で行うことができます。しかし、バックグラウンドタスクとしてこれを行うべきではありません - 新しいプロセスは、それが開始されたプロセスグループから解除されなければなりません。

この FAQ に対して同じような間違った答えを出し続けている人がいるので、ここに完全な答えを書きました。

http://symcbean.blogspot.com/2010/02/php-and-long-running-processes.html

コメントより

<ブロッククオート

ショートバージョンは shell_exec('echo /usr/bin/php -q longThing.php | at now'); ですが、その理由はここに含めるには少し長いです。