Que peut faire un site pour se bloquer lorsque la suppression d'un utilisateur?

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

  •  16-10-2019
  •  | 
  •  

Question

Lorsque je tente de supprimer des utilisateurs se bloque tout le site, à savoir Drupal ne répond plus. Que peut faire cela?

Le site n'a pas de modules de profil utilisateur spécial installé.

Edit: Il n'y a qu'un seul module sur mesure (auto fait) avec un hook_user qui passe sur $op. Le cas « Supprimer » semble soupçonneux:

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

ne semble pas mal pour moi. Ne devrait pas invoquer un hook_user-cercle.

Edit: Le problème est allé tout seul. Aucune idée de ce qui est arrivé.

Était-ce utile?

La solution

Pour moi, cela est arrivé quand il y a une mauvaise configuration sur hook_user dans un module personnalisé. Plus précisément, vérifiez toutes vos implémentations de hook_user pour vous assurer qu'il n'y a pas de fonctions qui conduisent à des appels supplémentaires pour hook_user.

C'est, si vous avez un module que les appels foo_do_magic_to_user() sous hook_user (ou, une autre fonction qui frappe hook_user) et foo_do_magic_to_user() appels user_save(), alors vous avez une boucle infinie sur vos mains.

Mise à jour

Si vous êtes absolument certain que ce n'est pas une boucle de hook_user, alors il pourrait y avoir un certain nombre de déconnexions associé module. Ceux-ci impliquent souvent des services externes qui ne sont pas sensibles (par exemple l'envoi d'un « Au revoir » email mais sendmail (ou équivalent) n » est pas mis en place correctement).

Dans vos chaussures, je voudrais essayer:

1) Désactiver tous les modules non essentiels et de voir si le problème persiste. Si cela se produit toujours avec des modules noyau uniquement, alors vous pourriez avoir un problème plus profond et plus fondamental (version correcte de PHP?)

2) Dans le cas contraire # 1, puis réactivez modules contrib un par un et voir lequel est la cause du problème. Inspectant le hook_user de ce module devrait vous donner une bonne idée de ce que la racine du problème est. Très probablement, l'un des modules appelle un autre service qui est non recevable.

Autres conseils

La première chose que je ferais est de mettre en place une machine virtuelle locale avec une réplique du serveur en direct pour les tests locaux. Idéalement, ce serait une copie faite avec dd ou similaire.

voir si quelque chose est en œuvre hook_user. Pour les sites D5-D6 J'utilise un grep récursif (en utilisant ack ) à partir de la racine du site pour localiser ces derniers. Supprimer le code et voir si le site encore se bloque.

Utilisez le MySQL log des requêtes lentes pour voir si elle a des conseils. Utilisez ps et haut pour voir ce qui se passe réellement sur le serveur Web.

Je ne pense pas que le D5 a verrouillage (D6 a href="http://api.drupal.org/api/drupal/includes--lock.inc/6" rel="nofollow"> lock.inc )

Il serait également utile si vous pouviez expliquer comment vous parvenez à récupérer le serveur une fois qu'il est / verrouillé /.

Licencié sous: CC-BY-SA avec attribution
Non affilié à drupal.stackexchange
scroll top