3

サーバー上でphpスクリプトを実行して生き続ける必要があります。スクリプトはDBを実行してレコードをチェックし、必要に応じて処理し、3秒間スリープしてから無限ループでスクリプトの先頭にループします。問題はそれを起動することです.php script.phpを使用してターミナル(ubuntuシステムで実行されている)から起動すると、ターミナルセッションが終了するとスクリプトの実行が停止します。

では、バックグラウンドで実行されたままになるようにスクリプトを起動するにはどうすればよいでしょうか。

さらに、1 時間に 1 回実行される cron ジョブを設定し、プライマリ スクリプトがまだ実行されていることを確認する別のスクリプトを起動し、そうでない場合は再起動する場合、このチェッカー スクリプトを取得して、最初のスクリプトがまだ実行されていることを確認するにはどうすればよいでしょうか。 (スリープ状態であっても)。

どんな援助でも大歓迎です

4

3 に答える 3

4

Web からスクリプトを開始するオプションがある場合は、時間制限を (スクリプト自体で) 「無制限」に設定します。

set_time_limit(0); 

そして、ignore_user_abortを次のように設定し"true"ます。

ignore_user_abort(true);

その後、通常どおり Web からスクリプトを実行できます。スクリプトは永久に実行されます (プロセスが強制終了されるか、スクリプトが通常の方法で終了するまで)。

もちろん、このようなスターター スクリプトをパスワードで保護することもできます (また、保護する必要.htaccessがあります)。


別のプロセスが実行されているかどうかを確認するには、質問 1 、質問 2 を参照するか StackOverflow「[php] プロセスが実行されているかどうかを確認する」を検索してみてください。http://php.net/manual/en/refs.fileprocess.process.phpも参照してください。

于 2013-04-24T21:34:32.477 に答える
2

端末から実行して永続的に実行したい場合は、GNU screenを調べてください。端末を閉じてもバックグラウンドで動き続ける仮想端末です。

$ sudo apt-get install screen

これにより、次のことが簡単にできます。

$ screen php myscript.php

スクリプトは、screen切断できるセッションでロードされ、ターミナルを閉じても実行され続けます。それを確認するには、次のように呼び出します。

$ screen -x

最良の部分はscreenフリー ソフトウェアであり、すべての優れたディストリビューション (および Linux がボートを浮かせない場合は他の *NIX) のリポジトリにあります。

于 2013-04-24T21:46:57.287 に答える
1

Cron ジョブは 1 つの解決策です 。Cron ジョブの詳細については、こちらを参照してください。

それを行う別の方法は、Gearman またはこの投稿のような他のタスク マネージャーを使用することです。

于 2013-04-24T21:37:42.527 に答える