2010-11-13 87 views

回答

10

上面接受的答案是不正確的。 Cron在Drupal中的時間限制被硬編碼爲240秒。見includes/common.incdrupal_cron_run功能,特別是這些行:

drupal_set_time_limit(240); 

if (!lock_acquire('cron', 240.0)) { 

(基於Drupal 7.12的來源)

那麼,有沒有辦法在全球範圍內,而不更改此黑客攻擊核心。我聽說它建議在你的hook_cron實現中自己調用drupal_set_time_limit,因爲這樣做會重置PHP的計數器。但是,如果它是實施hook_cron的第三方模塊,那不會對您有所幫助。

+0

主要更新狀態和搜索模塊導致cron失敗。 – Serjas 2013-01-05 09:59:32

3

Drupal cron的最大執行時間取決於您的php.ini

例如,如果您使用wget -O - -q -t 1 http://www.example.com/cron.php作爲cron命令,則使用apache的php.ini來確定最大執行時間。

如果您使用php -f cron.php作爲您的cron命令,則使用php-cli的php.ini來確定最大執行時間。

建議使用php-cli以獲得更高的執行時間,您可以從/etc/php5/cli/php.ini(如果使用debian linux)設置最大執行時間,並在cron運行時對apache沒有副作用。

+2

+1,但通過CLI調用的cron時提醒一句:確保每個模塊都不會的'hook_cron()'的實現依賴於使用Web服務器提供的變量,因爲它們顯然在該上下文中不可用(花了相當一段時間才發現某個模塊在cron調用中使用了'$ _SERVER ['DOCUMENT_ROOT']')。 – 2010-11-14 11:21:29

2

我不知道這是否一定是這種情況,因爲我剛剛通過瀏覽器運行cron.php,並且我獲得了240秒的max excution time error,而我的php.ini中的最大執行時間是1200秒。所以除了我的php.ini文件之外,Drupal正在抓住最大的執行時間。

那個地方會在./includes/common.inc./includes/locale.inc。進入那裏,有設置來調整drupal允許cron在放棄之前運行多長時間