Модуль 'обновления' может быть сделан менее агрессивным?

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

Существует ли способ уехать, модуль включил, мало того, что полные обновления инициировали кроном вместо каждого раза, когда состояние или страницы модуля посещают в администраторе?

Я использую Drupal 6.26.

6
15.01.2020, 20:13
3 ответа

Насколько я могу сказать, что нет ничего о посещении администраторской страницы модулей (или любая другая администраторская страница), который вызвал бы проверку на данные обновления.

Drupal 6

Для Drupal 6 работа сделана _update_refresh(), который непреднамеренно называют от нескольких мест в самом модуле обновления. Знаменитые включают:

  • update_cron() - названный только во время выполненного крона.
  • update_status() - обратный вызов страницы, только вызванный при посещении обновления, сообщает о странице.
  • update_requirements() - вызванный, когда Вы посещаете страницу состояния.

Так как ни одного из тех не называют для каждой администраторской страницы, и Drupal 6 не имеет автокрона (Вы также упомянули в комментариях, у Вас нет poormanscron установленным), не кажется, что любая из базовых функций будет преступником.

Нет никакого способа сбросить реализации рычага для определенных модулей в Drupal 6 (существует в Drupal 7, посмотрите ниже), так за исключением редактирования файла модуля непосредственно, я не думаю, что существует что-либо, что можно сделать об этом.

Drupal 7

Работа сделана update_get_available(), и та функция только вызвана от 4 мест ядром:

  • update_cron() - названный только во время выполненного крона.
  • update_manager_update_form() - обратный вызов страницы, только вызванный при посещении страницы менеджера по обновлению.
  • update_requirements() - вызванный, когда Вы посещаете страницу состояния.
  • update_status() - обратный вызов страницы, только вызванный при посещении обновления, сообщает о странице.

Если обновление происходит на каких-либо других страницах, чем упомянутые выше, оно или вызывается contrib/custom модулем, или (более вероятно) потому что у Вас есть автокрон на, и выполненный крон вызывается. Мог бы быть больше к нему, чем это, но я не могу найти ничего просматривающего базовый код.

Насколько страница состояния идет, Вы могли удалить реализацию модуля обновления hook_requirements() из кэшируемого списка реализаций рычага, эффективно мешая проверке произойти, когда Вы переходите к той странице. Это означает, что Вы никогда не будете получать ту конкретную строку в отчете о состоянии, но если Вы будете в порядке, проверяя на обновления вручную затем, то это не будет проблемой.

Способ сделать это должно реализовать hook_module_implements_alter() в пользовательском модуле:

function MYMODULE_module_implements_alter(&$implementations, $hook) {
  if ($hook == 'requirements') {
    unset($implementations['update']);
  }
}

Любая версия

Можно замедлить частоту проверок обновления немного путем установки update_check_frequency переменная к чему-то дольше, чем стандарт. Переменная содержит количество дней, которое должно передать, прежде чем данные обновления проверяются снова.

4
24.01.2020, 22:51

В отношении модуля Обновления мое решение никогда не состоит в том, чтобы использовать его на живом веб-сайте, только в Staging или Devel, но не с заключительным веб-сайтом.

Также Elysia Cron позволяет Вам для выбора, когда Вы хотите выполнить весь hook_crons. Я думаю, что это, "должен иметь" модуль во всех drupal проектах.

3
24.01.2020, 22:51

Да, конечно. Я не думаю, что это встроено, таким образом, у Вас на самом деле есть довольно классная идея для легкого, но полезного пользовательского модуля. Я на самом деле сделал что-то очень близко к этому не слишком долго назад.

Вы создаете модуль, говорят, что updateManager, и в Вашем файле модуля добавляют elysia крон как зависимость,

Одна из целей модуля могла состоять в том, чтобы иметь Ваш модуль, добавляет текстовое поле на странице конфигурации обновления для легкой установки даты и времени, которую Вы хотите, чтобы update.php выполнил.

Это поле поддерживает crontab синтаксис 0 * * * * синтаксис,

  • Благодаря elysia API крона легко установить, сохранить и получить и играть с задачей крона в Вашем коде. Если Вы хотите Вас, мог бы даже просто создать задачу крона здесь, что сверхиды основная задача крона и будут перечислены в elysia панели задачи крона.

    • В Вашем пользовательском модуле можно легко добавить поле к 'форме конфигурации обновления' с form_alter на форме.

    • Другая опция состоит в том, чтобы выключить обновления и сделать это с задачей крона, которая выполняет обновление через drush.

0
24.01.2020, 22:51

Теги

Похожие вопросы