при запуске cron.php максимальное время выполнения превышает фатальную ошибку

Я использую Drupal 6.19 с довольно большим количеством модулей. Поскольку я добавил еще один домен с помощью Domain Access, добавил вариант панели и тип узла, cron сначала исчерпал лимит памяти в 512 МБ. Я увеличил этот лимит до 1024 МБ. После того, как я это сделал, превышено «Максимальное время выполнения» в 240 секунд.

Любые идеи? Какую дополнительную информацию я должен предоставить?

Спасибо

Лукас


person luksak    schedule 09.05.2011    source источник
comment
Черт возьми, твой cron требует ГИГАБАЙТА памяти? Это не нормально!! Даже по меркам Drupal это много =)   -  person Rudie    schedule 09.05.2011
comment
Да, это безумие. Я использую некоторые модули, которые действительно заставляют меня думать, что их следует переписать...   -  person luksak    schedule 09.05.2011
comment
Какова скорость остальной части сайта? 4 минуты на загрузку каждой страницы? =) Drupal требует много памяти для кеширования. Если это необходимо только для cronjob (каждые 4 часа?), это выполнимо, если остальной части веб-сайта требуется всего несколько МБ.   -  person Rudie    schedule 09.05.2011
comment
Среднее время загрузки 1с. Я активно использую кэширование.   -  person luksak    schedule 09.05.2011


Ответы (3)


Попробуйте поискать реализации cron в своих модулях. Также временно отключите каждый из них (отдельно) и посмотрите, имеет ли это какое-то значение.

Возможно, модуль работает в каком-то цикле. Возможным кандидатом может быть search.module, который хранит все комментарии одного узла. Если у вас есть узлы с тысячами комментариев (сообщений на форуме), это может быть причиной.

person Berdir    schedule 09.05.2011
comment
Я согласен. Будьте осторожны при отображении типа контента с отношениями узла. - person Brice Favre; 09.05.2011
comment
Мне пришлось отключить search.module и update_status.module. После этого я удалил представление, которое только что добавил, прежде чем столкнулся с этой ошибкой, и добавил его снова. Теперь это работает. - person luksak; 09.05.2011
comment
Да, я предполагаю, что это узел с множеством комментариев, это типичная проблема. Вы можете получить узлы с наибольшим количеством комментариев с помощью следующего запроса: SELECT nid, COUNT(*) FROM comments GROUP BY nid ORDER BY COUNT(*) DESC lIMIT 10. - person Berdir; 09.05.2011

Загляните внутрь: include/common.inc Строка: 2716

Измените set_time_limit на более высокое число, например 400.

Надеюсь, это поможет кому-то.

Финау

person Finau    schedule 04.08.2011
comment
Именно то, что я искал. Кажется, независимо от того, что я сделал, эта одна строка сбрасывала мой максимальный тайм-аут до 240. Спасибо за это!! - person Beyerz; 07.08.2012

Вы должны иметь возможность увеличить максимальное время выполнения с помощью set_time_limit(), но я думаю, было бы неплохо узнать, что делает ваш скрипт в течение четырех минут!

Я мало что знаю об этом скрипте drupal, но могу предложить следующее:

  • Следите за базой данных, пока она работает, я предполагаю, что медленные запросы MySQL, вероятно, будут основной причиной ее медленной работы.
  • Если медленные запросы не являются причиной, настройте какое-то профилирование (рекомендую xdebug + webgrind для чего-то простого), установите set_time_limit() на что-то действительно высокое и запустите скрипт. Используйте данные профилирования, чтобы увидеть, что работает так медленно, а затем поработайте над его оптимизацией.
person James C    schedule 09.05.2011