2011-07-01 21 views
1

私は複数のサーバーでcronジョブを実行し、単一のサーバーでこれらのcronジョブを自動的に実行するPHPソリューションを探しています。毎日のダイジェストメールや週報など、一度だけ実行する必要があるクロムジョブがあります。クラウドベースの環境でPHP cronjobを実行

今のところ、crontabがインストールされた「マスター」サーバーと、それにApacheがインストールされている複数の「通常の」サーバーがあります。問題は、「マスター」サーバーに障害が発生した場合、もう誰もcronジョブを実行しないことです。また、どのサーバーがマスターであるかを把握する必要があり、スケーリングの問題が発生しています。

複数のサーバーで独自のタスクを実行する既成のPHPソリューションはありますか?

私はギアマン(http://www.slideshare.net/felixdv/high-gear-php-with-gearman)を見てきましたが、少し複雑すぎます。ファーム内の1台のサーバーだけがcronジョブを実行することを保証する必要があります。

答えて

1

私は私の同時実行やスクリプト自身の「実行中」のチェックを構築します。

最後の実行時間を示すデータベースまたはmemcachedの 'ロック'を更新します。

ロックが存在する場合は、ロックが古すぎない限り、スクリプトの他のコピーに安心してください。
ロックがmax_executionを超えていた場合、スクリプトは失敗したか、実行時間が長くなりすぎてロックが解除されませんでした。その状態であなた自身をメールしてください。

スクリプトの終了時にロックを解除することを忘れないでください。

+0

ありがとうございました。それは私も同様にやっていると思っていることです。ギアマンは、いくつかのcronjobsの過剰なように聞こえる – aporat

0

無料のソリューションまたは有料のものが必要かどうかわかりません。 私が今考えている唯一の解決策は、IBMが提供するTWS Tivoli Workload Schedulerです。 私が知る限り、それはWindowsまたはLinux/Unixマシンの両方で動作します。

http://www-01.ibm.com/software/tivoli/products/scheduler/

関連する問題