删除用户时会导致站点挂起的内容? -- users 领域 和 7 领域 drupal 相关 的问题

What can cause a site to hang when deleting a user?


5
vote

问题

中文

当我尝试删除用户时,整个站点挂起,即drupal不再响应了。什么会导致它?

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

编辑:
只有一个自定义(自制)模块,带有Hook_User,它打开 $op 。 "删除" 案例外观未验证:

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

对我来说看起来不舒头。不应该调用hook_user-circle。

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

英文原文

When I try to delete users the whole site hangs, i.e. Drupal does not respond anymore. What can cause that?

The site does not have any special user profile modules installed.

Edit:
There is only one custom (self made) module with a hook_user which switches on $op. The 'delete' case looks unsuspicious:

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

Doesn't look bad to me. Should not invoke a hook_user-circle.

Edit:
The problem is gone all by itself. No idea what happened.

     
   
   

回答列表

4
 
vote
vote
最佳答案
 

对我来说,当在自定义模块中有一个错误的 hook_user1 存在错误的情况时,发生了这一点。具体来说,检查 hook_user 的所有实现,以确保没有导致 hook_user 的额外呼叫的功能。

是,如果您有一个调用 998876664 hook_user (或者,遇到的其他函数 99887666 ),以及 hook_user )的模块代码> foo_do_magic_to_user() 调用 user_save() ,然后手上有一个无限循环。

更新

如果您绝对确信它不是 hook_user 循环,那么可能有任何数量的模块关联的挂起。这些往往涉及非响应的外部服务(例如,发送"再见" 电子邮件,但Sendmail(或等效)无法设置)。

在你的鞋子里,我会尝试:

1)禁用所有非核心模块,看看问题是否仍然存在。如果这仍然只有核心模块,那么您可能有更深入和更基本的问题(正确版本的PHP?)

2)如果不是#1,则逐个启用Contract模块,并查看哪一个导致问题。检查模块的hook_user应该为您提供一个良好的线索,即根问题是什么。最有可能,其中一个模块正在调用一些非响应的其他服务。

 

For me, this has happened when there is a misconfiguration on hook_user in a custom module. Specifically, check all of your implementations of hook_user to make sure there are no functions that lead to additional calls for hook_user.

That is, if you have a module that calls foo_do_magic_to_user() under hook_user (or, some other function that hits hook_user), and foo_do_magic_to_user() calls user_save(), then you have an infinite loop on your hands.

Update

If you're absolutely certain that it's not a hook_user loop, then there could be any number of module-associated hangups. These often involve external services that are non-responsive (e.g. sending a "Goodbye" email but sendmail (or equivalent) isn' set up properly).

In your shoes, I would try:

1) Disable all non-core modules and see if the problem persists. If this still happens with only core modules, then you might have a deeper and more fundamental issue (correct version of PHP?)

2) If not #1, then re-enable contrib modules one-by-one and see which one is causing the issue. Inspecting that module's hook_user should give you a good clue as to what the root issue is. Most likely, one of the modules is calling some other service that is non-responsive.

 
 
 
 
2
 
vote

我所做的第一件事是将本地VM与Live Server的副本设置为本地测试。理想情况下,这将是用 hook_user0 或类似的副本。

看看是否在实现 hook_user1 。对于D5-D6站点,我使用递归grep(使用 ack )从站点root找到这些。删除此代码,看看网站是否仍然挂起。

使用mysql 慢查询log 看它是否有任何提示。使用ps和顶部查看Web服务器上的实际情况。

我不认为d5有锁定(d6有 lock_acquire 在 lock.inc )

如果您可以解释一下,您可以解释如何恢复服务器的方式/锁定/锁定/ p>

 

The very first thing I'd do is to set up a local VM with a replica of the live server for local testing. Ideally this would be a copy made with dd or similar.

See if anything is implementing hook_user. For D5-D6 sites I use a recursive grep (using ack) from the site root to locate these. Remove this code and see if the site still hangs.

Use the MySQL Slow Query Log to see if it has any hints. Use ps and top to see what's actually happening on the web server.

I don't think that D5 has locking (D6 has lock_acquire in lock.inc)

It would also help if you could explain how you manage to recover the server once it's /locked/.

 
 

相关问题

31  如何让用户取消发布并发布自己的内容?  ( How do i let users unpublish and publish their own content ) 
我想让用户取消发布并发布自己的内容。默认情况下,您必须为用户提供"管理节点" 权限,以便用户无法解除发布或发布内容。这是广泛的方式。我想让用户取消发布或仅在他们创建它时发布节点。这也意味着它们应该能够查看未发布的节点,如果才能创建它。 ...

3  user_is_anonmous()和user_is_logging_in()之间有什么区别?  ( What is the difference between user is anonymous and user is logged in ) 
两个功能有什么区别?何时应该使用,而不是另一个? ...

2  在哪里插入额外的注销功能的最佳位置?  ( Where is the best place to insert additional logout functionality ) 
在用户注销的情况下插入附加逻辑可能会在user.pages.inc中查看 function user_logout() .inc。此代码在核心模块中,您不应该编辑它,但工作得很好...例如,通过将以下代码添加到'user_logout()'函数的顶部... $last_run = variable_get('...

9  以编程方式冒充另一个用户,而不会导致当前登录用户退出  ( Programmatically impersonating another user without causing the currently logged ) 
如何更改全局 $user 的值,执行自己的代码,并恢复 99887664 的原始值,而不会导致当前用户注销如果发生错误? ...

3  核心论坛形式下拉空  ( Core forum form dropdown empty ) 
在D6站点中,当用户进入节点/添加/论坛时,他们发现下拉"论坛" 只是显示"请选择" 但是该菜单中没有任何内容。 PHP错误日志或看门狗中没有任何内容。 我相信用户有正确的权限 - 毕竟,表单确实显示。否则(admin)的下拉列表显示了站点上的所有不同论坛,都是空的,而且没有它不能提交表单。 我已经看到了几乎所有...

148  推荐的目录权限是什么?  ( What are the recommended directory permissions ) 
我正在努力部署drupal 7站点,我找不到关于建议的安全有效文件和目录权限的任何文档。 特别是 default/files/ (也是子目录?), settings.php , .htaccess 以及其他任何我应该知道的。 ...

2  如何表示用户作为“系统帐户”?  ( How to denote a user as a system account ) 
在Unix世界中,有"用户帐户" 用于人类使用,并且有软件使用"系统帐户" 。 在一个drupal站点上,我有几个系统账户旨在通过 services.module API呼叫使用。 我希望这些帐户能够通过服务API(显然)登录,但我想阻止这些帐户通过标准 99887665 表单来登录。我还想防止这些帐户在标准的"活...

6  我应该如何处理容器表单元素?  ( How should i handle container form elements ) 
我已将一些自定义字段添加到寄存器用户表单中,我发现它们被发送回,包装在"容器" 类型元素中。我的代码需要处理所有类型的自定义寄存器字段。 我该如何解析这些对象并从中提取字段?我应该调查阵列,我可以在那里找到什么? 我似乎无法在这些对象上找到任何好的文档。 编辑: 通过用户注册收到的常规字段可能如下所示: na...

5  定制登录/注册的最佳方法  ( Best method for custom login register ) 
我想创建一个自定义登录名和寄存器页面。我希望两种表格在彼此上方的模板的内容区域中显示在正面上,而不是在单独的节点上。此外,我想尝试重复使用已存在的代码以验证表单。 我已经四处寻找并找到了不同的方式来实现这一目标,所以我想知道做这个问题的最佳方法。案例块,模块或模板或......? 将欣赏到内容或特定示例的链接。 ...

2  如何允许用户确定其他用户可以编辑其内容?  ( How do i allow users to determine which other users can edit their content ) 
我想让用户指定其他用户可以编辑它们的内容。基本上,用户将能够创建一段内容,然后允许它们编辑但没有其他用户可以编辑(接受"管理员" )。这是迄今为止的所有标准的笨蛋的东西。但现在我想让用户给予其他特定用户的权限来编辑他们创建的内容。因此,"创建者" 现在可以分配"编辑器" ,让其他用户编辑原始用户创建的内容。 如果尚不...

1  在权限页面上添加特定模块“组”的自定义权限  ( Add custom permission to specific module group on permissions page ) 
使用自定义模块,如何将权限添加到权限页面上的核心/贡献模块"组" ,而无需攻击核心/贡献的模块? 示例: ...

4  如何在注册时重定向到命名节点  ( How to redirect to a named node upon registration ) 
给出了一个D6网站,用户必须确认其电子邮件地址,我希望新注册人立即重定向到解释电子邮件验证过程的页面节点。 我试图使用动作和触发器来执行此操作,但"触发:在发送用户帐户之后" 在发送激活电子邮件之前执行,因此消息被阻止,从未退出。这似乎是一个未解决的问题追踪,如D5。 登录目标模块列为支持D7.x但不是6.x的...

6  “企业”身份验证,单个登录和多个站点的用户配置  ( Enterprise authentication single sign on and user provisioning for multiple s ) 
我正在寻找一个用户配置,身份验证和单点登录的解决方案,这将使我能够在我们工作的所有网站上管理我公司所有工作人员的帐户。 我的主要目标是有一个单点我可以添加/删除用户来授予/撤销对我们员工需要工作的所有网站的访问。这显然是一个非常有用的东西,但它也意味着我可以要求员工定期更改密码,没有它需要一天才能完成每个网站等。所有...

1  节点访问表变为空  ( Node access table goes empty ) 
我目前有一个项目,我正在使用node_save将mulitple记录插入drupal。它通常是一百一的几百。出于某种原因,有时node_access表最终为空,导致数据"出现" 删除给用户。 有谁知道可以发生什么? 我已审核node_save代码,通知是通过 node_access_acquire_grants($n...

10  用户如何只访问一个特定节点,而不是那种类型的所有节点?  ( How can a user access only one specific node and not all nodes of that type ) 
我有一个用户查看和编辑特定内容类型的权限。这为所有用户提供了特权来查看和编辑该类型的所有节点。但实际上,我想为每个用户创建一个唯一节点,这样只有该用户可以查看和编辑它。我如何在Drupal 7中这样做? ...

2  如果用户无权查看术语,则不显示术语名称  ( Never show the term name if the user has no permission to view the term ) 
我用一个词汇表到我发布到我的网站的Freetag书签,我想隐藏所有术语(也是大多数节点;大多数或全部,我不在乎)。 使用TAC模块,我使用以下设置开始: 全局默认值:show / create / delete:忽略show-term-checkbox:是的 MyVoc默认值:show(node):禁止; show...

5  如何获取当前登录用户拥有的内容?  ( How to get the content owned by the currently logged in user ) 
用户是只有一个节点的所有者,我想在登录时间将用户重定向到他唯一拥有的节点。 如果我只知道登录用户,我如何获得节点内容? ...

2  AEGIR / DRUSH别名问题:指令行指定的配置文件获取忘记  ( Aegir drush alias issue profiles specified at command line get forgotten ) 
注意:Aegir是用于Drupal Sites&amp的安装/站点管理工具;平台。查看 http://community.aegirproject.org/ 详细信息。 这个问题可能倒到Aegir问题或吹嘘身份;受到任何一个角度的思想,欢迎: 我已经设法通过命令行创建Aegir / Drupal平台(请参阅 http...

1  什么是访问记录“content_access:全部”?这是覆盖我的分类管理模块  ( What is the access record content access all this is overriding my taxonomy ) 
自从我上次重建我的权限以来,我的权限遇到了问题。 (在研究用户参考权限后,我完成了这一点。此字段没有用户参考) 分类权限具有相同的优先级。实际上所有访问模块都具有零的优先级。当我转到可以看到的页面时,即使不应该看到它,它会显示以下内容授予访问页面的访问: 我认为我必须让人们默认情况下访问页面,然后如果分配分类,...

2  一个站点上的登录框也将您登录到另一个站点  ( Login box on one site to log you into another site too ) 
我的客户有一个drupal 6网站。这与项目管理项目的客户一起使用。我们正在使用Drupal(尚未决定的6月7日)为我们的客户构建新的主网站。他们希望在有新网站的主页上有一个登录框,这些网站将在项目管理站点登录。所以类似的东西: 转到主网站 输入项目站点的用户名和密码 使用用户登录的网站更改为项目站点。 这是可能的吗...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.