毎月末までに実行する必要がある PHP スクリプトがあります。Unix ライクなシステムで cron を使用したり、Windows システムでタスク スケジューラを使用したりせずに、どのようにすればよいでしょうか? このための組み込み機能がphpにありませんか?cron/スケジューラを使用することは、IMOの移植性がそれほど高くないためです。
3 に答える
他の唯一の方法は、Web サイトが読み込まれたときにトリガーすることです。たとえば、スクリプトが最後に実行された時刻を保存します。次に、ページが読み込まれるたびに、それを実行する時間かどうかを確認します。その場合は、ページ読み込みの一部として実行します。もちろん、これは (1) タスクが非常に高速であること、および (2) タスクがスケジュールどおりに正確に実行される必要がないこと (秒単位まで) に依存します。これは基本的wp_cron()
にWordpressでどのように機能するかです。
PHP は単なるスクリプト言語であり、時間を認識し、必要なタイミングでイベントをトリガーするプロセスではありません。
サーバーに落ち着いたら、移植性について心配する必要はありません。環境が大きく異なる可能性があるため、別の場所への移行は自動的なプロセスではありません。
したがって、cron を使用するか、OS に依存しないレイヤーを自分で作成してください。
私が取り組んだシステムでは、スクリプトの最後の実行が保存された小さなモジュールがあり、メインスクリプトを実行するたびに、スクリプトが実行されるべきではないかどうかをチェックしました。必要に応じて、他の何よりも実行される前に実行されたため、定期的なスクリプトが「時間通りに」実行されなかったとしても、システムは正しいデータを保持していました。また、スクリプトを複数回実行してはならないかどうかを確認し、必要に応じて複数回実行しました。少し大雑把ですが、PHP/mysql 以外は何もしなくても正しい結果が得られます。