DrupalBook.org.ua
Готовые решения для сайта на Drupal.Быстрая диагностика зависания крона
Задача
Определить причины зависания крона и устранить их.
Решение
Индексация
Уменьшите количество документов для индексирования за один запуск крона на стр. настройки поиска.
Лучше запускать крон несколько раз в день.
Рассылка
Если у вас стоит simple news то он может вызывать зависание при рассылке большого количества писем.
Не хватает времени
Попробуйте изменить файл cron.php следующим образом:
<?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
<?php
foreach (module_implements($hook) as $module) {
$function = $module .'_'. $hook;
?>на
<?php
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 с которого разрешаете запуск крона.
Использованные материалы
Быстрая диагностика зависания крона
Полезные ссылки
- Страница для печати
- Просмотры: 42
Creative Commons: Attribution-Share Alike 2.5
Данные материалы выложены под лицензией Creative Commons: Attribution-Share Alike 2.5. Это значит, что вы можете распространять, копировать и модифицировать эти произведения при условии упоминания авторства оригинала, и при условии, что они также будут распространяться на условиях этой лицензии (то есть, изменённую работу нельзя защитить копирайтом). Подробнее смотри: http://ru.wikipedia.org/wiki/Creative_Commons