質問
ユーザーを削除しようとすると、サイト全体がハングします。つまり、Drupalはもう反応しません。何がそれを引き起こす可能性がありますか?
このサイトには、特別なユーザープロファイルモジュールがインストールされていません。
編集:
スイッチを入れたhook_userを備えたカスタム(自己作成)モジュールは1つだけです $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
.
つまり、呼び出すモジュールがある場合 foo_do_magic_to_user()
下 hook_user
(または、ヒットする他の機能 hook_user
)、 と foo_do_magic_to_user()
電話 user_save()
, 、それからあなたはあなたの手に無限のループを持っています。
アップデート
あなたがそれがそうではないことを絶対に確信しているなら hook_user
ループ、その後、モジュール関連のハングアップが数多く存在する可能性があります。これらには多くの場合、非応答性のある外部サービスが含まれます(例:「さようなら」電子メールの送信が、sendmail(または同等の)ISN 'を適切にセットアップします)。
あなたの靴の中で、私は試してみます:
1)すべての非コアモジュールを無効にし、問題が持続しているかどうかを確認します。これがまだコアモジュールのみで発生している場合、より深くより基本的な問題があるかもしれません(PHPの正しいバージョン?)
2)#1ではない場合は、Contribモジュールを1つずつ繰り返し可能にして、どれが問題を引き起こしているかを確認します。モジュールのhook_userは、ルートの問題が何であるかについての適切な手がかりをあなたに与えるべきであることを検査する。おそらく、モジュールの1つは、反応しない他のサービスを呼び出すことです。
他のヒント
私が最初に行うことは、ローカルテスト用のライブサーバーのレプリカを備えたローカルVMをセットアップすることです。理想的には、これは作られたコピーです dd
または類似。
何かが実装されているかどうかを確認します hook_user
. 。 D5-D6サイトの場合、再帰グレップを使用します(使用 Ack)これらを見つけるためのサイトルートから。このコードを削除して、サイトがまだハングしているかどうかを確認します。
MySQLを使用します スロークエリログ ヒントがあるかどうかを確認します。 PSとTOPを使用して、Webサーバーで実際に何が起こっているかを確認します。
D5にロックがあるとは思わない(D6には lock_acquire の lock.inc)
また、サーバーが /ロックされたら、どのようにサーバーを回復するかを説明できれば役立ちます。