2012-01-08 39 views
1

毎月、毎週月曜日、月曜日の最初の月曜日の3つの異なる時刻に別のスクリプトを実行しようとしています。ここの人から、cronはこれを1日に1回実行し、対応するスクリプトはあらかじめ設定された時間に実行されます。イベントをスケジュールするcronでPHPスクリプトを実行する

私はそれをサーバ上に置いて選択した日付を待っている以外はテストできますか?私は月の最初の日にその日付を変更するとローカルのApacheサーバを実行しています。それを実行して、これは大丈夫でしょうか?

これは間違いありませんか? :

<?php 
$RUN_everyday = `/path/to/php/everyday.php`; 
$RUN_everymonday = `/path/to/php/everymonday.php`; 
$RUN_firstmondayofmonth = `/path/to/php/firstmondayofmonth.php`; 


date_default_timezone_set('Europe/London'); 
$weekday = date('D'); 
$dayOfMonth = date('d'); 
// runs the everyday php file 
echo '$RUN_everyday'; 
if ($weekday == 'Mon') 
{ 
//runs the every monday php file every monday of the week 
echo '$RUN_everymonday'; 
if ($dayOfMonth <=6) 
//runs the first monday of the month php file on the first monday of each month 
echo '$RUN_mondayofmonth'; 
} 
?> 
+3

私はあなたがこのスクリプトの実行をトリガするためにcronを使用あなたのアイデアの権利を取得していますか?そして、このスクリプト自体は3つのスクリプトを起動するはずですか?なぜ3つのスクリプトをトリガするためにcronを直接使用しないのですか?それは非常に直感的なので、私はまた、クロン設定の重いテストが必要ではないと言うでしょう。 – fkerber

+0

if($ dayOfMonth <= 6) 'は実際には' if($ dayOfMonth <= 7) 'でなければなりません。そのために残念。 – yankee

答えて

2

私は手動でこれらの変数を設定することで、それをテストしたい:

date_default_timezone_set('Europe/London'); 
//$weekday = date('D'); 
//$dayOfMonth = date('d'); 
$weekday = 4;  // <----------- 
$dayOfMonth = 14; // <----------- 
// runs the everyday php file 
echo '$RUN_everyday'; 

変更を何にあなたがテストし、それをトリガーする値ということ - 何が起こるかを参照してください!

+0

ありがとう:-)、私はそれを試したときにそれの外観で大丈夫と思われる –

+0

また、私はあなたのユーザー名を通知していない。スナップ。 Ian Simpson、あなたのサービスで); – SpoonNZ

1

ほとんどすべての人がこのタイプの仕事に使用するツールを使用することをお勧めします。

+0

クライアントがすべての月曜日のグループのメンバーであるかどうかをチェックし、価格を送信するかどうかを確認するにはどうすればよいですか? –

+0

cronが呼び出すスクリプトにそのロジックを書きます。 – jmkeyes

1

私はこれを行うためにPHPのレイヤーを追加しません。 Cronはこのようなスケジューリングを独自に処理できます。

これはそれを行う必要があります。

0 0 * * * php every_day_midnight.php 
0 0 * * 1 php every_monday_midnight.php 
0 0 0-6 * 1 php first_monday_midnight.php 
関連する問題