0

顧客ごとに多数の操作を行うPHPサービスを開発しており、これを継続的に実行したいと考えています。私はすでにcronを見てきましたが、私が理解している限り、cronは設定された時間にコードを実行することを可能にしました。コードが最初からやり直す前に実行が終了していることに依存しているため、これは少し危険です。各実行の時間は、顧客ベースの増加に応じて変わる可能性があります。したがって、私が知る限り、更新、cron、またはその他の時間間隔は実行できません。

それで、サービスが終了したときにサービスを再開でき、すべてのコードが実行される前に再実行を行わない解決策を知っているかどうか疑問に思っていますか?

これが以前に答えられた、またはグーグルで簡単に見つけられた場合は申し訳ありませんが、私は何かを見つけようとしましたが、役に立ちませんでした。

編集:絶対に確実にするために、時間間隔を1時間に設定することもできますが、各実行間の時間をできるだけ短くしたいと思います。

4

4 に答える 4

1

これを見てください: http ://www.godlikemouse.com/2011/03/31/php-daemons-tutorial/

必要なのは、実行を続けるデーモンです。これよりも多くの解決策がwhileループにあります。

私がかつてプロジェクトで使用したものは次のとおりです:http://kvz.io/blog/2009/01/09/create-daemons-in-php/、これはPEARのパッケージでもあります:http://pear.php.net / package / System_Daemon

詳細については、次のSOリンクを参照してください。

デーモンとは:デーモンとは何ですか?それらの実用化?phpでの使用法? 使用方法:永遠に機能するPHPスクリプト:)

于 2013-03-26T13:30:11.367 に答える
0

PHPスクリプトをプロセスとして実行してみましたか。詳細はこちらhttp://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/

于 2013-03-26T13:33:27.487 に答える
0

デーモンのコーディング方法を学びたくない場合は、ユーザーランドのプロセスを管理するソフトウェアを使用することをお勧めします:スーパーバイザーhttp://supervisord.org/

実行するプロセスとその方法を指定するには、構成ファイルを作成するだけです。構成は非常に簡単で、非常に適応性があります(プロセスのインスタンスを1つだけ強制することも、代わりにインスタンスの数を固定することもできます...など)。また、スクリプトがクラッシュした場合の自動再起動とログ記録も処理します。

PHP側では、ループを使用して、決して終了しないスクリプトを作成しwhile(true) { ... }、supervisordのconfに次のようなエントリを追加します。

[program:your-script]
command=/usr/bin/php /path/to/your_script.php

私はそのソフトウェアをいくつかのプロジェクトの本番環境で使用しています(Webサイトのrubyおよびphp gearman非同期ワーカーを実行するため)。

于 2013-03-26T13:37:29.130 に答える
-1

フラグのオンとオフを設定できるカスタムロジックを作成してみてください。CRONでは、その中のコードを実行する前に確認できます。キューベースのソリューションのようなものを提案したかったのですが、エントリを取得したら、処理のロジックを実行します。デーモンまたはcronのいずれかです。タスクを今すぐ実行しても問題がない場合は、より詳細に制御できます。編集しました

于 2013-03-26T13:28:31.587 に答える