Cette "contribution" est une proposition d'optimisation de la fonction tep_get_parent_categories (récupère les ancètres de la catégorie) qui pratique de façon récursive des requêtes en base de données.

Les requêtes qu'effectue cette fonction ne sont pas lourde a l'unité mais plus il y a de catégories et plus la fonction mangera du temps.

La proposition que je vous fait est donc de réduire ce temps en n'effectuant qu'une seule requête et de stocker les résultats dans un système arborescent et indexé.

Bien entendu, j'ai réduit au minimum les éléments chargés (puisque l'objectif etait cette fonction) mais il est très aisé de pousser la méthode plus loin (il y a juste a modifier la requête présente dans categories.class.php ainsi que rajouter les fonctions et les attributs de class correspondants) et d'utiliser les class proposées pour n'appliquer qu'une et une seule requête sur l'ensemble des catégories (pour les informations les concernant a savoir les images, les noms etc), mais ce n'est pas (encore) le sujet ici.

Pour donner une idée du bénéfice, la base de test sur laquelle j'ai appliqué la chose contient assez peu de catégories(22 sur 2 niveaux) et j'ai gagné 1/10 de seconde sur le temps d'execution de la page (ici, la page d'index), passant ainsi de 0.543s a 0.449s d'execution moyen (moyenne effectuée sur la même machine, sur le même serveur et sur un total de 30 tests par état)

------------------------------------------------

This "contribution" is an optimisation of the tep_get_parent_categories function (Get ancestor of categories) whitch load recursively some imformation in database.

Queries are not verry important one by one but this function call so much time the query that it should slow your application.

My purpose is to reduce the time used by this function in querying only one time the database and in collect the informations in an indexed array.

Evidently, i did the minimum because the objective was the function, but you can increase the performance in loading some others imformations like image, name etc... for some others places.

I test the modification on a small site whithe only 22 on 2 levels and i improve performances by 1/10s (On the index), improve from 0.543s to 0.449s (moyenne effectuée sur la même machine, sur le même serveur et sur un total de 30 tests par état)

More...