La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 04/12/2024 09:22:28
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
Posté le : 27/08/2004 13:37:24 Sujet du message : Problème "Fatal error: Maximum execution time of 10 sec
Bonjour,
Depuis ses débuts, le forum a bien grandi, et en même temps qu'il a grandi, d'autres choses ont grandies (jusque là je suis énigmatiques). Parmi ces choses, il y a les messages postés... et l'indexation. Explications : phpbb2 vient avec un système de recherche basé sur l'indexation des mots-clefs dans un message. Par exemple, lorsque j'aurai posté ce message des mots-clefs seront récupérés, avec par exemple "indexation". 1. phpbb2 se voulant économe (et on ne peut pas lui en vouloir sur le coup), il va d'abord rechercher le mot "indexation" dans une table - phpbb_search_wordlist - (si vous préférez imaginez que vous faites une recherche dans un fichier Excell, vous recherchez dans la première colonne qui contient les mots-clefs). 2. Il se passe deux choses : le mot "indexation" est trouvé, ou il ne l'est pas. Dans le premier cas, on récupère ce que l'on appelle un identifiant - des identifiants y en a partout dans phpbb : exemple avec l'adresse de la page de post : posting.php?mode=newtopic&f=1, 1 fait partie de ces identifiants - qui nous servira plus loin. Dans l'autre cas, on ajoute le mot, et on récupère son identifiant. 3. Une fois que l'on a récupéré l'identifiant du mot "indexation", on va ajouter des données permettant de relier ce mot au message. En d'autres termes, ce message aura par exemple l'identifiant X, il faudra l'associer avec le mot clef "indexation" qui a l'identifiant Y. Ces données sont ajoutées dans une autre table : phpbb_search_wordmatch. 4. Là, je n'ai parlé que du mot "indexation". Comme vous pouvez le constater mon message est long, très long. Il n'y aura donc pas qu'"indexation" a devoir être indexé, il va y avoir d'autres mots comme identifiant, etc. Et il faudra refaire toute l'opération d'indexation (étape 1, 2 et 3) pour chaque mots. Parmi tout ça, il y a des mots qui ne devraient pas passer : ça il des qui ne Ces mots sont trop courants, mais ils passent quand même. C'est à dire que vous pouvez rechercher les mots-clefs "ça", "il", etc. Plus que ça : voici le nombre de message contenant les mots énoncés plus haut : des : 26261 il : 3694 ne : 13487 qui : 23744 ça : 2924 Cela fait déjà pas mal de messages contenant ces mots. 5. Actuellement la table phpbb_search_wordmatch culmine dans les 3 millions de données, et la table phpbb_search_wordlist dans les 150.000. C'est ce qui fait que vous pouvez avoir l'erreur fatale énoncées plus haut : l'insertion/sélection met trop de temps, et ça timeout (littéralement, ça a mis trop de temps à fonctionner) Que faire pour améliorer ça ? Actuellement, vous ne pouvez rien faire. C'est à moi qu'il incombe de chercher une solution, et si j'en ai quelques une, il faut ensuite les mettre en place... sachant que modifier le code de phpbb2 est comme déclencher le compteur d'une bombe H (oui, c'est mal codé, ou en tout cas, faut cerner ce que font les auteurs de phpbb2...). Toujours est-il : je pense dans le présent qui va venir (bref, bientôt) supprimer les mots clefs courant, ainsi que les mots clefs qui ne sont constitués que de nombres (000000000000, etc). Et bien entendu, il faut déjà faire une liste des mots clefs courants. Cela ne devrait pas résoudre le problème (faudrait revoir l'architecture de la recherche en plus propre surtout...), mais cela devrait réduire le nombre de mots-clefs facilitant l'insertion de nouveaux et diminuant le nombre d'enregistrements de phpbb_search_wordmatch. A noter : lors de l'édition, c'est à peu près les mêmes étapes en pire. Je ne sais plus exactement comment phpbb2 s'y prend, mais il me semble qu'il supprime tous les mots clefs du message pour les recréer. Que faire si j'y suis confronté ? Typiquement, quand il y a timeout, tout le code php qui est écrit après la routine qui a causé le timeout ne sera pas interprété. Et, parmi ce code il y a (vous l'aurez deviné hein) le code d'insertion/édition du message. Donc en gros, votre message n'est pas envoyé. Vous devez recommencer jusqu'à fin du timeout... Solutions possibles 1. Virer les mots clefs courant 2. Virer l'indexation [mais on ne pourra plus rechercher sur les nouveaux messages] 3. Refaire le système d'indexation [mais je bosse sur la v3] : en stockant les messages sans les options de formattage (bbcode, smilies, html), les mots courants (une liste de mots est à créer) et en utilisant une recherche FULLTEXT sur une table qui copie phpbb_posts_text pour ne contenir que la partie textes des postes. C'est une idée, peut-être pas la meilleure. Si quelqu'un connaît bien php, et aussi phpbb2, et qu'il se sent près à résoudre ceci, je lui souhaite la bienvenue. _________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
olfleouf Acolyte Messages: 35 |
La solution a sûrement déjà été envisagée, mais je préfère le marquer tout de même :
[http] En nettoyant les bons mots, et en empêchant leur future indexation, ca devrait aider. _________________ Arkanis, forum jeux de rôle dungeons et dragons 3.5 |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
J'ai fait, j'ai fait. J'en ai supprimé 1 Million comme ça.
_________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Page 1 sur 1 ¤
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum