0

常に実行したいphpループがあります。現在、ブラウザでx.phpを実行したままにすると、永久にループします。ブラウザウィンドウを開いている限り...そしてそれはうまく機能します。

ブラウザのタブを開いたまま座っていなくても、常に実行するにはどうすればよいですか?私はそれを24時間年中無休で実行したいと思っています。自分自身を再起動する必要があります。

ありがとう

4

4 に答える 4

2

コマンドラインから実行できますか?

nohup php -f /path/to/x.php &

これによりnohup、ユーザーがログアウトしても実行を継続できます。

他の回答のcronソリューションは、実行されるたびに新しいインスタンスを開始します-それが必要かどうかはわかりません。ただし、スクリプトが停止して再起動する場合は、スクリプトが実行されているかどうかを確認する別のデーモンを実行し、実行されていない場合は起動する必要があります。チェックを実行して実行を開始する単純なスクリプトを作成し、そのスクリプトをcronして、5分ごとまたは必要な頻度で実行することができます。

于 2012-05-29T22:17:37.957 に答える
1

PHPをどのようにトリガーするかによって異なります。

ブラウザで実行を開始したい場合は、いくつかのオプションがあります。バックグラウンドで新しいプロセスを開始するか(たとえば、を使用してシェルスクリプトを呼び出すと、別のphpプロセスが生成されます)、提供されているメソッドexecを試すことができます。ignore_user_abort()

ignore_user_abort(true)ユーザーがページリクエストを中止した場合(これは際限なく実行されます)、バックエンドPHPプロセスはこれに気づきません。すべての状況で機能するとは限らないことに注意してください。たとえば、出力をブラウザに送り返すことはできません。明らかにこれはパイプが閉じているためですが、つまり、キャッチ可能なエラーではないため、スクリプトの実行が停止します。

このようなブラウザで起動しない場合は、カスタムスクリプトでcronを使用することをお勧めします。私は毎分実行されるcronスクリプトでそれを行います。このスクリプトは、最初にPIDファイルを使用してPHPプロセスを作成し、PHPは必要な処理を実行します。スクリプトを実行するたびに、PIDファイルが存在することを確認し、存在する場合は、プロセスが有効であることを確認します。そうでない場合は、最初に計画されたとおりにプロセス/PIDファイルの作成を繰り返します。

于 2012-05-29T22:25:25.350 に答える
0

cronジョブについて読んでください。彼らの助けを借りて、あなたは毎分24時間年中無休で実行するために任意のphpスクリプトを実行することができます。

于 2012-05-29T22:17:45.287 に答える
0

何を達成しようとしているのかよくわかりませんが、実行したいのはスクリプトのように聞こえますか?もしそうなら、あなたはそれのためのcronタブを作成したいと思います。構文はここにあります:

http://content.hccfl.edu/pollock/unix/crontab.htm

例は次のとおりです。

5/* * * * 1 /usr/bin/php -q /location/to/your/script/file.php
于 2012-05-29T22:19:07.117 に答える