私はPHPに新たなんだ、そう、次のような問題への最も簡単かつ/またはエレガントな解決策になるためにどのように私はいくつかのガイダンスを必要とする:複数のタイムクリティカルなバックグラウンドタスク
私はプロジェクトに取り組んでいましたユーザーが指定した期間に最大50万レコードのテーブルを持ち、バックグラウンドタスクを起動して、マジックを実行するサーバー上でコマンドラインアプリケーションを起動する必要があります。問題は、1分ごとに必要です。何かを行う必要がある場合は、すべての500,000レコード(および数え)をチェックしてください。
タイトルにはタイムクリティカルな意味があります。つまり、ユーザーが期待する時間とタスクが実行される時間の間に最大1分の遅延が許容されます。より良い。
これまでのところ、私は毎分で、サーバーへの例を複数の要求を行うことを、サーバー上で実行される簡単なユーティリティアプリを持っている、非常に汚いオプションを考えることができます:
- チェック1から100,000の間の記録;
- 100,000〜200,000のチェックレコード。
- などあなたはポイントを得る。
そして、サーバは基本的に100,000レコード以下の大量のタスクを開始しますが、私にはもっと早いアプローチが必要です。これはFacebookの通知に似ています。
追加情報:
- サーバーは、Apache + PHPを使用して、Windows 2008
- ある
EDIT 1
- ユーザーが持っているあたり3つのタスクの平均約6〜8時間で1日nterval
- 複数のタスクの半分以上は、同じ時間に実行日あたり少なくとも1時間することができ[!]
任意の提案が高く評価されます!
通常、以前のタスクが実行中であるかどうかを確認してから、そのタスクを終了するか、新しいタスクを開始しないで終了するまでに時間がかかります。これは実際に必要なものによって決まります。同一のタスクはどんな状況下でも2回実行されず、タスクは毎分実行されます。 – ThiefMaster