2011-11-30 9 views
1

cronスクリプトを書かずにPHPでスケジューラーを作るにはどうすればいいですか?標準的な解決策はありますか?cronの助けを借りずにPHPでスケジューラーを作るには

機能[例:]:すべてのサブスクライバに残り24時間を送信しましたb4サブスクリプションが失効しました。

+0

なぜあなたは正確にcronを使いたくないですか? – Trott

答えて

2

UNIX標準のオペレーティングシステムではcronを使用し、Windowsではスケジュールされたタスクを標準的に使用します。

cronを使用しない場合は、atを使用してリグを試すことができます。しかし、cronが問題だが、atがA-OKであるという状況を想像するのは難しい。

0

私が見溶液(または中)ループとsleep(3600*24);

0

はcronジョブのテーブルを作成したJavaScript

-1

を通じて送信AJAX呼び出しあなたのすべての設定された間隔を通してそれを実行しています。 cronの仕事の日付を保つ。今日の日付がcreonjobテーブルの日付と等しい場合は、条件を維持します。実行するメソッドを呼び出します。これはCRONジョブのようにうまく動作します。

0

実装を急がれる前に私の最後の意見を読んでください。


実際にはスケジュールするのが最良の方法です。シンプルで効果的で広く利用できます。 cronが利用できない場合、またはそれを使用したくない場合、従来のWebサーバー上で動作する非cronのApache/PHP疑似cronの一般的なアプローチの2つは次のとおりです。ロード可能なリソース
埋め込みコードのどこかに、各Webページ上の画像/スクリプト/スタイルシート/ を使用して

を確認します。画像はおそらくブラウザで最もよくサポートされています(javascriptがオフになっている場合、ブラウザが.jsソースファイルを読み込むことさえ保証されません)。 PHPマニュアルから

を - (fpassthruを見て1x1の明確な.GIFで結構です)それぞれに

<?php 
header("Content-Length: 0"); 
header("Connection: close"); 
flush(); 

// browser should be disconnected at this point 
// and you can do your "cron" work here 
?> 

チェックをノートこのページはブラウザにヘッダと空のデータを送信しますページロード
自動化するタスクごとに、呼び出し可能なAPI(静的OOP、関数呼び出しなど)を作成します。 各リクエストには、特定のタスクに対して何か作業があるかどうかをチェックします。これは、スクリプトに別のURLを使用しないことを除いて、上記と似ています。これは、作業中にページが読み込まれるまでに時間がかかることを意味します。

これは、タスクが最後に実行された時間を記録するタスクテーブルか、問題のデータ(例:サブスクリプションテーブル)を使用してデータベースに選択クエリを送信することです。可能であればあなたは本当にこの上車輪の再発明べきではありません

最終意見
Cron is very easy to set up
しかし、あなたの意見では、cronはではなく、に設定することが簡単であると考えても、これを考慮してください:サイトのすべてのページが読み込まれるたびに、何が必要かを確認するオーバーヘッドが発生します行われなければ。一方、True cronは、設定したスケジュール(毎時など)でコマンドラインPHPを実行します。これは、サーバーがタスクチェックコードを実行する頻度がはるかに低いことを意味します。あなたが実際に十分な頻度で起こって最新情報を得るためにあなたのサイトに十分なトラフィックを持っていないのリスクを実行しのcron

なし

最大の潜在的な問題。

関連する問題