当我尝试删除用户整个网站悬挂时,即Drupal不再响应。什么会导致那件事?

该站点没有安装任何特殊的用户配置文件模块。

编辑:
只有一个带有钩子的自定义(自制)模块可以打开 $op. 。 “删除”案例看起来并不奇怪:

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

看起来对我不好。不应调用钩子圈。

编辑:
问题本身就消失了。不知道发生了什么。

有帮助吗?

解决方案

对我来说,这发生在发生错误的结果时发生的 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应该给您一个很好的线索,了解根部问题是什么。其中一个模块最有可能调用一些无反应性的服务。

其他提示

我要做的第一件事是设置具有Live Server的副本以进行本地测试的本地VM。理想情况下,这是与 dd 或类似。

看看是否有任何实施 hook_user. 。对于D5-d6站点,我使用递归grep(使用 ACK)从站点根来定位这些。删除此代码,看看该站点是否仍然悬挂。

使用mysql 慢速查询日志 看看它是否有任何提示。使用PS和TOP查看Web服务器上实际发生的事情。

我认为D5没有锁定(D6有 lock_acquirelock.inc)

如果您可以解释服务器 /锁定 /锁定服务器后如何设法恢复,这也将有所帮助。

许可以下: CC-BY-SA归因
scroll top