3つのオプションがあります。私の推奨事項:可能な場合はcronを使用し、必要な場合はユーザー主導で、最後の手段としてデーモンを使用してください。
(1)cron(コメントに記載されているとおり)
cronは、システムでコマンドラインジョブを実行するLinuxシステム用のスケジューラです。 ssh経由でサーバーにログインし、crontab -e
と入力します 、次のような行を追加します:
4 5 * * * php /path/to/my/script.php
これにより、スクリプトは毎日午前5時4分に実行されます。
<?php
// /path/to/my/script.php
// Do something
一部のホスティングサービスでは、GUIを使用してcronジョブを入力できます。特定の時間にURLを呼び出す外部のcronサービスもあります。
(2)デーモン
これは最も高度なオプションであり、信頼性も最も低くなります。無限ループを含むコマンドラインスクリプトを実行します。次に、スクリプトは定期的に状態をチェックし、それに応答します。数か月の実行後にクラッシュする可能性があるため、クラッシュした場合に備えて、再起動するための2番目のスクリプトが必要です。これは大変な作業ですが、最も柔軟なアプローチです。
<?php
while (1) {
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
sleep(5);
}
3。ユーザー主導
サイトにかなりの量のトラフィックがある場合、出力がなくなったときに、これをページフッターに含めることができます。このコードが高速であることを確認してください。そうしないと、不運なユーザーがそれを待っています。
<?php
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
別のスタックオーバーフローで個人的にテストしていない「ユーザー主導」のより凝ったアプローチもあります質問 。