2013-02-16 40 views
1

我已經設置了一個每35分鐘執行一次php腳本的cronjob。問題是我只希望它在第二天的上午11點到凌晨2點之間運行。我希望這是自動的,而不必手動將#添加到crontab。cronjob。只在指定的時間間隔內運行php

我試圖把這樣的事情在PHP腳本的頂部:

$time = date(H); 

if ($time < 23 & $time > 11) 
{ 
    echo 'Working'; 
} 
else 
{ 
    echo 'Stopped'; 
} 

但正如你所看到的,僅適用於同一天。

備註服務器正在使用另一個時區,它與我的時差有+4小時。

表示:上午11點本地時間是下午3點服務器時間,下午3點本地意味着下午7點服務器。

回答

1

所以你想讓你的cronjob在一天中的某幾個小時之間運行?您是否嘗試過:

35 11-23,0-2 * * * php /path/to/your/script.php 

這將在35分鐘過去執行每小時上午11點(1天)和02:00(2日)之間 - 一切都在服務器時間。

+0

什麼11-23和0-2在這裏的含義是什麼?請你能指導我。 – 2015-03-13 07:10:08

+0

如何運行它?在哪裏放這條線? – 2015-03-13 07:10:57

0

您需要附上H用引號:

$time = date("H"); 

另一種方式它被視爲不變,而且,你沒有這樣的常數,date()接收空參數

附: hohner爲您提供了更好的解決方案

0

在檢查前將時間轉移到正確的時區。

0

讓我們把你的代碼,並應用一些算術,只是。減去2小時,你將有9〜23,而不是11〜23 + 0-2

$time = date(H) - 2 ; 

if ($time < 23 & $time > 9) 
{ 
    echo 'Working'; 
} 
else 
{ 
    echo 'Stopped'; 
} 

試試!

我想你的時區是格林威治標準時間-4,所以你的時區上午11點到凌晨2點將是服務器上午15點到上午6點;另一個可能的設置是你正在討論服務器時間,這意味着你的設置上午11點到凌晨2點是上午7點到晚上10點。

這意味着它是可能的,你必須調整代碼減去6小時,而不是2.

相關問題