2009-08-28 18 views
3

私の状況は以下のとおりです:週に指定された時刻に30秒ごとにXMLファイルをサーバーにプッシュする外部プロバイダがあります。その時間は毎週変わります。だから、私は自分のユーザーに私たちのサイトの管理側のインターフェースを提供して "ボタンを押して"データのキャプチャをトリガーできるようにしたいと考えています。 (と同じようにジョブをオフにすることができる)PHPを使用したcronジョブの追加/削除

私はこれをPHPを使って行う予定です。私は、私のスクリプトからいくつかのシステムコマンドを実行して、cronジョブをスケジュールして削除する必要があると仮定します。

私の質問です:これを行う最良の方法ですか? PHPからcronジョブをスケジュールしたり削除したりするのに危険はありますか?私がこれを作成しているとき、何を覚えておく必要がありますか?

また、これを達成する方法のヒントはすべて歓迎されます。前もって感謝します。

+0

推奨事項を考慮して、私はcronジョブが連続して実行される場所まで設定し、更新されたファイルのディレクトリをチェックします。それが最も簡単で最も効果的な解決策であるようです。助けてくれてありがとう – Anthony

答えて

4

アップロードされたXMLファイルを探しているcronジョブを毎分実行することをお勧めします。ディレクトリ内にファイルがあるかどうかを確認することは、必要のないときにオフにするために必要な複雑な管理インタフェースを作成するために必要な高価な操作ではありません。

+0

私は私の質問のこの部分を作ったはずです...私は、最新のデータを引き出すために30秒ごとにジョブを実行する必要があると思います。合理的なサイズのXMLファイルを30秒ごとに解析すると、パフォーマンスに悪影響がありますか?それとも、それは疑問な点ですか? – Anthony

+0

もしそれが「合理的な大きさ」なら、あなたは何かを傷つけるつもりはないと思う。しかし、「cron」が持つ最高の解像度は1分に1回です。 30秒ごとに処理する必要がある場合は、cronジョブを30秒間スリープ状態にして2回目のチェックを行うか、デーモンを作成する必要があります。 – chaos

+0

ああ、私は忘れてしまったのは、ちょうど第二のものではなく、分に向かっている。助けてくれてありがとう。 – Anthony

1

crontabファイルを読み込んで、スクリプトを実行する行を追加/コメント解除またはコメントアウトすることができます。それはエラーがあなたのcrontabを壊してしまい、他の仕事に影響を及ぼす可能性があるので、私は緊張します。

また、cronジョブを実行したままにすることもできます。オン/オフスイッチに他のファイルやデータベースの値を設定して、クローンスクリプトがその値をチェックして実際に何かを実行するか終了するかを判断させます。

また、cronジョブを常に実行したままにしておくと、ユーザーは常に新しいデータを持ち、ファイルの読み取りをオンにする必要はありません。

または、特定の曜日に実行されるようにcronジョブを設定します。

2

PHPを使用してcronジョブを追加または削除しないことをお勧めします。代わりにPHPを使用して設定される(固定の)cronジョブを作成する必要があります。それは、キューに入れられた実際のジョブに対して実行されるたびに、いくつかの設定ファイルまたはデータベースをチェックすることができます。

1

私は以前にこのようなことをしてきました。私はcrontabレベルでcronをオン/オフすることはお勧めしません。

代わりに、すべての時間を実行するcronを残すが、PHPスクリプトは次のようになります。memcacheの、データベース、設定ファイルにフラグを探す必要があり

if(ScriptIsEnabled()) 
{ 
    DoWork() 
} 

ScriptIsEnabled()、またはどのようにあなたがしたい、これまでスクリプトに連絡してください。私はmemcache(最小のオーバーヘッド - 単に値を設定する)をデータベースより優先します。

これを制御するためにオン/オフボタン付きのWeb GUIを使用できます。

+1

+1これは、特にセキュリティ特権のためにcrontabを直接操作できない場合に、非常に優れた、最も信頼できる方法です。 –

+0

+1はい、シンプルで賢い – dino

関連する問題