2010-11-13 8 views

ответ

10

Принятый ответ выше НЕПРАВИЛЬНО. Ограничение времени Cron в Drupal жестко запрограммировано до 240 секунд. Смотрите функцию drupal_cron_run в includes/common.inc, в частности эти строки:

drupal_set_time_limit(240); 

и

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

(на основе источника Drupal 7.12)

Таким образом, нет никакого способа изменить это глобально без взлом ядра. Я слышал, что он предложил позвонить drupal_set_time_limit внутри вашей реализации hook_cron, так как это сбрасывает счетчик PHP. Однако это не поможет вам, когда это сторонний модуль, реализующий hook_cron.

+0

В основном обновление статуса и модуль поиска вызывают сбой cron. – Serjas

3

Максимальное время выполнения для cron Drupal зависит от вашего php.ini.

Например, если вы используете команду wget -O - -q -t 1 http://www.example.com/cron.php в качестве своей команды cron, то app's php.ini используется для определения максимального времени выполнения.

Если вы используете команду php -f cron.php в качестве своей команды cron, то php.ini php-cli используется для определения максимального времени выполнения.

Рекомендуется использовать php-cli для более высокого времени выполнения, где вы можете установить максимальное время выполнения с /etc/php5/cli/php.ini (если вы используете debian linux) и не имеете побочных эффектов на apache во время работы cron.

+2

+1, но слово предупреждения при вызове хрон через кли: Убедитесь, что ни один из ваших модулей 'hook_cron()' реализация зависит от использования переменных, предоставляемых веб-сервер , поскольку они, очевидно, не будут доступны в этом контексте (потратили некоторое время на то, чтобы найти, что модуль использовал '$ _SERVER ['DOCUMENT_ROOT']' на вызовах cron. –

2

Я не знаю, действительно ли это так, поскольку я только что запустил cron.php через мой браузер, и я получаю max excution time error из 240 секунд, пока мое максимальное время выполнения в моем php.ini составляет 1200 секунд. Поэтому где-то помимо файла php.ini Drupal захватывает максимальное время выполнения.

Это где-то было в ./includes/common.inc или ./includes/locale.inc. Направляйтесь туда, и есть настройки, чтобы настроить, как долго drupal позволит cron работать до того, как сдаваться

Смежные вопросы