ユーザーを削除しようとすると、サイト全体がハングします。つまり、Drupalが応答しなくなります。何が原因ですか?
サイトには特別なユーザープロファイルモジュールがインストールされていません。
編集:$op
。 「削除」のケースは不審に見えます:
case 'delete':
$sql = "DELETE FROM {mynewsletter_users} WHERE uid = %d";
db_query($sql, $account->uid);
break;
私には悪くないです。 hook_user-circleを呼び出さないでください。
編集:
問題はすべて自然に解消されました。何が起こったのかわからない。
私にとって、これはカスタムモジュールの_hook_user
_の設定に誤りがある場合に発生しました。具体的には、_hook_user
_のすべての実装をチェックして、_hook_user
_の追加呼び出しにつながる関数がないことを確認します。
つまり、_hook_user
_の下でfoo_do_magic_to_user()
を呼び出すモジュール(または_hook_user
_をヒットする他の関数)があり、foo_do_magic_to_user()
がuser_save()
、あなたの手には無限ループがあります。
更新
_hook_user
_ループではないことが確実な場合は、モジュールに関連するハングアップがいくつもある可能性があります。これらには、応答しない外部サービスが含まれることがよくあります(たとえば、「さようなら」のメールを送信するが、sendmail(または同等のもの)が適切に設定されていない)。
あなたの靴で、私は試してみます:
1)すべての非コアモジュールを無効にし、問題が引き続き発生するかどうかを確認します。これがコアモジュールだけでまだ発生する場合は、より根本的な問題(PHPの正しいバージョン?)がある可能性があります。
2)#1でない場合は、contribモジュールを1つずつ再度有効にして、問題の原因となっているものを確認します。そのモジュールのhook_userを調べると、根本的な問題が何かについての良い手がかりが得られるはずです。ほとんどの場合、モジュールの1つが、応答しない他のサービスを呼び出しています。
私が最初に行うことは、ローカルテスト用にライブサーバーのレプリカでローカルVM=を設定することです。理想的には、これはdd
で作成されたコピーになるか、同様。
何か実装されているかどうかを確認してくださいhook_user
。 D5-D6サイトの場合は、サイトのルートから再帰的なgrep( ack を使用)を使用して、これらを見つけます。このコードを削除して、サイトが引き続きハングするかどうかを確認します。
MySQL Slow Query Log を使用して、ヒントがあるかどうかを確認します。 psとtopを使用して、Webサーバーで実際に何が起こっているかを確認します。
D5にロックがあるとは思わない(D6には lock_acquire が lock.inc にある)
また、/ locked /になったらサーバーを回復する方法を説明できれば役に立ちます。