URL: https://linuxfr.org/forums/programmation-php/posts/j-ai-besoin-d-un-avis-exterieur-pour-m-aider Title: J'ai besoin d'un avis extérieur pour m'aider... Authors: _Tof_ Date: 2016年07月18日T16:52:10+02:00 License: CC By-SA Tags: Score: 4 Bonjour à tous, Je suis encore en train de reprendre un code qui ne m'appartient pas, et je suis peut être (sans doute?) en train de faire de la merde... Pour me débarrasser d'un fichier de fonctions énorme et impossible à maintenir sans efforts démentiels, j'ai chercher à rassembler dans des classes toutes les fonctions liées à un type de données. Par exemple, j'ai une classe "utilisateur" avec un nom, prenom, adresse, CP, ville. Dans l'ancien code, lorsqu'on voulait tous les utilisateurs d'une ville données, une fonction faisait la requete SQL ("select * from utilisateurs where ville = 'paris'), et renvoyais directement le resultSet. Charge ensuite à la page PHP de traiter les enregistrements : while($row = mysqli_fetch_array($result)) { ... } C'est clairement la manière de faire qui me semble être la plus optimale, sauf que j'aimerais vraiment (mais alors vraiment) séparer l'interface avec les traitements issus de la base de données. j'ai donc créé une fonction statique qui renvoie un tableau d'objet "utilisateur". Ca fonctionne, ça à l'air pas mal, sauf qu'au niveau performances, c'est juste pas possible !!! En gros, je fais une première requête pour récupérer les identifiants des utilisateurs concernés (select id from utilisateurs where ville = 'paris'), et ensuite, je crée une instance (utilisateur = new utilisateur(id) ) pour chaque utilisateur que je stocke dans un tableau, qui est finalement retourné par la fonction. Sauf que forcément, chaque appel à "new utilisateur(id)" me refait une requête SQL... Si fonctionnellement, je trouve ça plus élégant, au niveau performance, je transforme quelque chose qui fait une seule requête et qui traite ligne par ligne, par quelque chose qui fait n+1 requêtes (suivant le nombre d’utilisateurs), qui fait une première boucle pour stocker ça dans un tableau, et qui fait encore une deuxième boucle pour faire l'affichage ! Sur-consommation de mémoire et de temps CPU ! Et toi cher journal, comment me conseilles tu de régler le problème ?