2011-07-04 1 views
1

PHPでAPIを使用して開始、停止、一時停止、再開、再スケジュールできるcrontabの代替品をご存知ですか?PHPでAPIを使用して開始、停止、一時停止、再開、再スケジュールを行うことができるcrontabの代替方法はありますか?

これはcrontabでも可能ですか?

私はcronによって実行される長い実行中のPHPスクリプトを持っています。私はまだ実行している間、私のPHPスクリプトを再実行しないように(スクリプトが実行されている間)cronを一時停止するか、再スケジュールする必要があります。スクリプトが実行された後、私は再びcronを起動します。

+2

同時実行中のロックの問題がなければなりません(でき)編集スケジュールせずに、スクリプト自体で解決しました。 – zerkms

答えて

2

あなたはトップハム・ハット卿がいる使用することができますCで書かれたデーモンで、基本的に何かを実行し、それを繰り返すことができます。すべてのプロセスロジックを抽象化するので、ビジネスロジックをPHPスクリプトに保存するだけで済みます。 1つのインスタンスの終了と次の開始の間の間隔、エラーの場合はより長い間隔、ロギング、必要に応じてスクリプトの多数のインスタンスを並行して実行する機能など、完全に構成可能です。

ウェブサイトはまだ基本的なものですが、多くの情報があります。ヘルプが必要な場合やご質問がある場合は、私にお手伝いします。

http://www.4pmp.com/fatcontroller/

+0

うわー、ありがとう。私が問題に遭遇したときにあなたに連絡します:) –

+0

あなたは歓迎です - 私は新しいウェブサイトを得ることを望み、v0.0.3を来週中に取得します。 – SlappyTheFish

+0

あなたのプロジェクトとあなたの記事http://www.4pmp.com/2011/02/daemonize-php-properly/の説明は私がやりたいことです、あなたのプロジェクトを見てください –

1

ジョブキューを試す必要があります。

いくつかあります(Zend Job Queueのような)純粋なPHPで実装またはbeanstalkdなどのデーモンサービスインストールされている(PHP-APIと同じようPheanstalkを。)

+0

私はすでにギアマンを使用しています。私は、タスクが実行されるときの設定をデータベースでチェックするPHPスクリプト(cron経由)を実行する必要があります。その後、PHPスクリプトはギアマンにこの仕事を送るでしょう。私のPHPスクリプトは、ギアマンのクライアントのように動作します。 –

4

あなたのPHPスクリプトにlockingロジックを追加したい場合があります。例えば。スクリプトはロックファイルが存在するかどうかをチェックし、存在する場合は中止することができます。それ以外の場合は、そのファイルが作成され、完了後に削除されます。最後に実行された時間をチェックしたり、1時間前に最後に実行された場合は中止するなど、ロジックにロジックを追加することができます。

cronジョブについては、スクリプトがロックをチェックするための責任があることを前提にして積極的なタイミング(たとえば5分ごと)を設定することができますが、最後の実行時間など

+0

"たとえば、スクリプトはロックファイルが存在するかどうかをチェックし、存在する場合は中断することがあります。" ---私は、ロックのための 'flock()'が既に存在しているということを付け加えます。これは、条件競争のない解決策です。しかし、この問題のためにも、ロックファイルは良い解決策になる可能性があります。 +1 – zerkms

+0

これは良い解決策だとは考えていません。 –

関連する問題