Что может привести к тому, что сайт висит при удалении пользователя?

drupal.stackexchange https://drupal.stackexchange.com/questions/71

  •  16-10-2019
  •  | 
  •  

Вопрос

Когда я пытаюсь удалить пользователей, весь сайт висит, то есть Drupal больше не отвечает. Что это может вызвать?

На сайте не установлены специальные модули профиля пользователя.

Редактировать:
Существует только один собственный (самостоятельный) модуль с hook_user, который включается $op. Анкет Корпус «Удалить» выглядит непреодолительно:

case 'delete':
    $sql = "DELETE FROM {mynewsletter_users} WHERE uid = %d";
    db_query($sql, $account->uid);
    break;

Для меня не выглядит плохо. Не должен вызывать круговой цикл Hook_user.

Редактировать:
Проблема исчезла сама по себе. Понятия не имею, что случилось.

Это было полезно?

Решение

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

То есть, если у вас есть модуль, который вызывает foo_do_magic_to_user() под hook_user (или какая -то другая функция, которая попадает hook_user), а также foo_do_magic_to_user() вызовы user_save(), тогда у вас есть бесконечная петля на руках.

Обновлять

Если вы абсолютно уверены, что это не hook_user Цикл, тогда может быть любое количество связанных с модулем впособлениями. Они часто включают внешние услуги, которые не реагируют (например, отправляют электронное письмо «прощание», но Sendmail (или эквивалент) настраивается правильно).

В твоей обуви я бы попробовал:

1) Отключить все неточные модули и посмотреть, сохраняется ли проблема. Если это все еще происходит только с основными модулями, то у вас может быть более глубокая и более фундаментальная проблема (правильная версия PHP?)

2) Если не #1, то повторно вносите модули введите модули один за другим и посмотрите, какой из них вызывает проблему. Проверка этого модуля Hook_user должно дать вам хорошую подсказку относительно того, в чем заключается проблема с корнем. Скорее всего, один из модулей называет какую-то другую службу, которая не отвечает.

Другие советы

Самое первое, что я сделаю, - это настроить локальную виртуальную машину с репликой живого сервера для локального тестирования. В идеале это была бы копия, сделанная с dd или похожие.

Посмотрите, реализуется ли что -нибудь hook_user. Анкет Для сайтов D5-D6 я использую рекурсивный GREP (используя ак) из корня сайта, чтобы найти их. Удалите этот код и посмотрите, видит ли сайт.

Используйте MySQL Медленный журнал запросов Чтобы увидеть, есть ли у него какие -либо подсказки. Используйте PS и Top, чтобы увидеть, что на самом деле происходит на веб -сервере.

Я не думаю, что у D5 есть блокировка (у D6 lock_acquire в lock.inc)

Это также поможет, если бы вы могли объяснить, как вам удастся восстановить сервер, как только он /заблокирован /.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top