PHPのAPIを介して開始、停止、一時停止、再開、再スケジュールできるcrontabの代替手段を知っていますか?
または、これはcrontabで可能ですか?
cronによって実行される長時間実行されているphpスクリプトがあります。スクリプトの実行中にcronを一時停止するか、スケジュールを変更して、実行中にphpスクリプトが再実行されないようにする必要があります。スクリプトを実行した後、cronを再起動します。
PHPスクリプトにロックロジックを追加することをお勧めします。たとえば、スクリプトはロックファイルの存在を確認し、存在する場合は中止する場合があります。それ以外の場合は、そのファイルを作成し、完了後に削除します。スクリプトにロジックを追加できます。たとえば、最後に実行された時刻を確認し、最後に実行されたのが1時間未満の場合は中止します。
cronジョブに関しては、スクリプトがロックや最終実行時間などのチェックを担当しているという前提に基づいて、積極的なタイミング(たとえば、5分ごと)を設定できます。
基本的に何でも実行できるCで書かれたデーモンであるFatControllerを使用して、それを繰り返すことができます。すべてのプロセスロジックを抽象化するため、PHPスクリプトにビジネスロジックを保持できます。1つのインスタンスの終了と次の開始の間の間隔の設定、エラーの場合のより長い間隔、ロギング、および必要に応じてスクリプトの多くのインスタンスを並行して実行する機能など、完全に構成可能です。
ウェブサイトはまだ少し基本的なものだと思いますが、たくさんの情報があります。助けが必要な場合や質問がある場合は、私にメッセージを送ってください。喜んでお手伝いします。
ジョブキューを試す必要があります。
純粋なPHPで実装されているもの(Zend Job Queueなど)や、beanstalkdなどのデーモンサービスをインストールするもの(PheanstalkなどのPHP-APIを使用)があります。