Cron は、Linux 用のジョブ スケジューラです。Windows では動作しません (Cygwin や etecetera に夢中にならなければ)。システム全体、さまざまな未知のシステム、およびすべて PHP (そのままではスケジュールできない) でサポートする必要がある場合は、次の 3 つの使用済みソリューションのいずれかに頼ることができます。
地上管制からの呼び出し
(リソース、具体的な時間、最も洗練されたソリューションで最高)
- 独自のボックスで cron を実行し、他のマシンを ssh してコマンドを実行する
- 独自のボックスでcronを実行し、「秘密のURL」にアクセスしてコマンドを実行します
- SetCronJobなどの外部サービスに「秘密の URL」を呼び出してもらいます
ランダム ジョブ ランナー
(実装が最も簡単で、リソースが少ない)
サイトでのユーザーの行動に直接影響を与えず、時間に左右されない (単に実行する必要がある) 何かを行う必要がある場合は、統計的な確率で実行することに頼ることができます。
// this will run on average once every 100 page views
if(rand(1, 100)==1) runJobQueue();
最悪のシナリオ
(リソースの負担が大きい)
ユーザーに直接影響を与えるため、ジョブを頻繁に実行する必要があり、タイム スケジュールを満たす必要がある場合は、クエリを保存し、最後の実行タイムスタンプでデータベースを更新し、ジョブを再実行する必要があるかどうかを確認し続けることができます。走る
// if has passed 1 hour since last update... re-update it
$result = mysql_query("SELECT `timestamp` FROM job_times WHERE whatever...")
if(mysql_result($result, 2) >= ( now() - 3600)) {
runJobQueue()