Быстрая диагностика зависания крона

13 Май 2008
Опубликовано VladSavitsky

Решение

Индексация

Уменьшите количество документов для индексирования за один запуск крона на стр. настройки поиска.
Лучше запускать крон несколько раз в день.

Рассылка

Если у вас стоит simple news то он может вызывать зависание при рассылке большого количества писем.

Не хватает времени

Попробуйте изменить файл cron.php следующим образом:

// If not in 'safe mode', increase the maximum execution time:
// if (!ini_get('safe_mode')) {
set_time_limit(1800);
// }

т.е. закомментить эти строки.

Кто виноват?

Что бы выяснить какой модуль виноват в зависании крона сделайте следующее:
В файле includes/module.inc в самой последней функции function module_invoke_all() поменяйте строку 404-405

foreach (module_implements($hook) as $module) {
    $function = $module .'_'. $hook;

на
foreach (module_implements($hook) as $module) {
    if ($hook == 'cron') {
    watchdog('cron_runs', $module); }
    $function = $module .'_'. $hook;

Таким образом у вас появится новая категория "cron_runs" в журнале
В этой категории будет список модулей вызывавших крон.
Крайний последний модуль и будет виноват в его зависании.

После диагностики обязательно верните все файлы ядра в исходное состояние т.к. хакать ядро это как вступать в беспорядочные половые отношения.

Cообщения "Попытка перезапуска .... в то время как уже выполняется."

Вы еще можете получать сообщения "Попытка перезапуска .... в то время как уже выполняется."
Связано это с тем, что wget может запрашивать cron.php до 20 раз подряд если не получает вразумительного ответа.
http://drupal.org/node/150972

Еще бывает полезно закрыть доступ к крону "извне" таким вот образом:
В файле .htaccess пишем:

<Files "cron.php">
Order deny,allow
Allow from xxx.xxx.xxx.xxx
Deny from all
</Files>

Вместо xxx.xxx.xxx.xxx пишете IP с которого разрешаете запуск крона.

Использованные материалы

Быстрая диагностика зависания крона

Полезные ссылки

Авторы решений:
Версия Drupal:
 
 
 

RSS-лента новостей

Dries Buytaert по-русски
]]>Русский поиск Drupal]]>

Перенос сайта из Joomla в Drupal
Перенос сайта из WordPress в Drupal

]]> Drupal - это бесплатная система управления контентом с открытым исходным кодом ]]>