2012-01-08 43 views
1

我試圖在每個月的三個不同時間運行不同的腳本,每天,每個星期一和本月的第一個星期一,我已經將以下內容放在一起從這裏的人,cron會每天運行一次,相應的腳本將在預設時間運行。用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來觸發該腳本的執行你的想法吧?這個腳本本身應該觸發另外三個腳本?你爲什麼不直接使用cron來觸發這三個腳本?由於它非常直觀,我還會說,不需要對cron設置進行大量測試。 – fkerber 2012-01-08 22:07:31

+0

'if($ dayOfMonth <= 6)'實際上應該是'if($ dayOfMonth <= 7)'。對不起。 – yankee 2012-01-09 17:02:20

回答

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

感謝:-),它似乎可以通過它的外觀當我嘗試它 – 2012-01-08 22:24:04

+0

此外,我沒有注意到你的用戶名。捕捉。伊恩辛普森,爲您服務;) – SpoonNZ 2012-01-08 22:32:14

1

我建議使用幾乎每個人都用這種工具的工具:cron。

+0

如何檢查客戶是否是每個星期一組的成員,並且他們是否向他們發送價格? – 2012-01-08 22:13:37

+0

你會在cron會調用的腳本中寫入該邏輯。 – jmkeyes 2012-01-08 22:30:56

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