常に実行したいphpループがあります。現在、ブラウザでx.phpを実行したままにすると、永久にループします。ブラウザウィンドウを開いている限り...そしてそれはうまく機能します。
ブラウザのタブを開いたまま座っていなくても、常に実行するにはどうすればよいですか?私はそれを24時間年中無休で実行したいと思っています。自分自身を再起動する必要があります。
ありがとう
常に実行したいphpループがあります。現在、ブラウザでx.phpを実行したままにすると、永久にループします。ブラウザウィンドウを開いている限り...そしてそれはうまく機能します。
ブラウザのタブを開いたまま座っていなくても、常に実行するにはどうすればよいですか?私はそれを24時間年中無休で実行したいと思っています。自分自身を再起動する必要があります。
ありがとう
コマンドラインから実行できますか?
nohup php -f /path/to/x.php &
これによりnohup
、ユーザーがログアウトしても実行を継続できます。
他の回答のcronソリューションは、実行されるたびに新しいインスタンスを開始します-それが必要かどうかはわかりません。ただし、スクリプトが停止して再起動する場合は、スクリプトが実行されているかどうかを確認する別のデーモンを実行し、実行されていない場合は起動する必要があります。チェックを実行して実行を開始する単純なスクリプトを作成し、そのスクリプトをcronして、5分ごとまたは必要な頻度で実行することができます。
PHPをどのようにトリガーするかによって異なります。
ブラウザで実行を開始したい場合は、いくつかのオプションがあります。バックグラウンドで新しいプロセスを開始するか(たとえば、を使用してシェルスクリプトを呼び出すと、別のphpプロセスが生成されます)、提供されているメソッドexec
を試すことができます。ignore_user_abort()
ignore_user_abort(true)
ユーザーがページリクエストを中止した場合(これは際限なく実行されます)、バックエンドPHPプロセスはこれに気づきません。すべての状況で機能するとは限らないことに注意してください。たとえば、出力をブラウザに送り返すことはできません。明らかにこれはパイプが閉じているためですが、つまり、キャッチ可能なエラーではないため、スクリプトの実行が停止します。
このようなブラウザで起動しない場合は、カスタムスクリプトでcronを使用することをお勧めします。私は毎分実行されるcronスクリプトでそれを行います。このスクリプトは、最初にPIDファイルを使用してPHPプロセスを作成し、PHPは必要な処理を実行します。スクリプトを実行するたびに、PIDファイルが存在することを確認し、存在する場合は、プロセスが有効であることを確認します。そうでない場合は、最初に計画されたとおりにプロセス/PIDファイルの作成を繰り返します。
cronジョブについて読んでください。彼らの助けを借りて、あなたは毎分24時間年中無休で実行するために任意のphpスクリプトを実行することができます。
何を達成しようとしているのかよくわかりませんが、実行したいのはスクリプトのように聞こえますか?もしそうなら、あなたはそれのためのcronタブを作成したいと思います。構文はここにあります:
http://content.hccfl.edu/pollock/unix/crontab.htm
例は次のとおりです。
5/* * * * 1 /usr/bin/php -q /location/to/your/script/file.php