Grandes lenteurs depuis le passage a PHP 5

comparef

WRInaute occasionnel
Bonjour,

Nous sommes recement passés à PHP 5 pour l'un de nos serveur.
Depuis nous observons de tres grandes lenteurs sur des pages principlement constituées de requetes SQL.

Savez vous si PHP5 a des mises a jour pouvant engendrer ces lenteurs ? (je parle de temps de chargement de 1 ou 2 seconde qui sont passés à 1 minute ou 2).

Je ne vous colle pas le code conserné car cela conserne des pages contenant plusieurs dizaines de requete SELECT, UPDATE, INSERT INTO et DELETE.

Cela ne se produit pas sur toutes les pageset je n'arrive pas a isoler le type de requete conduisant a ces lenteurs...

Merci d'avance pour votre aide.
Robin
 

tonguide

WRInaute passionné
Il n'y a rien de particulier avec PHP 5 qui pourrait provoquer des lenteurs. Des plantages à la limite.

Essai de mettre un "timer" entre chaque élément afin d'isoler le problème.

Tu affiches à la fin le temps que chaque partie a mis pour se charger et tu nous dis ce qu'il en est.

Sinon "plusieurs dizaines de requêtes" c'est vraiment nécessaire ?
 

[--Eric--]

WRInaute occasionnel
De quelle manière avez vous installé php5 ?
J'avais un serveur ou je faisais cohabiter php5 en cgi aux côté de php4 c'était la cata.
 

Suede

WRInaute passionné
Bonjour
Est-ce que tu as mis à jour mysql en même temps? Tu as peut-etre des optimisation à faire au niveau config? Ma config mysql n'etait pas adapté quand je suis passé à php5. J'ai du modifier pas mal de chose. C'est pas encore le top, mais c'est mieux.
 

comparef

WRInaute occasionnel
Merci pour vos réponses.

Ce n'est pas moi qui ai effectué la mise a jour donc je ne saurais pas répondre a vos questions sur le plan technique.

Je vais me renseigner et explorer vos pistes.
 

comparef

WRInaute occasionnel
Bonjour,

J'ai pue isoler les requetes causant ces lenteurs, il s'agit des requetes utilisant la méthode des jointures SQL

Type :
Code:
SELECT * FROM table2 t2 WHERE t2.nom = t1.nom

J'ai cherché dans les documentations et je n'ai trouvé aucune mention consernant ce type de requetes avec PHP 5.

Avez-vous une idées ?

Je continu a chercher du côté d'une éventuelle mise à jour de mysql.

Merci d'avance.
 

tonguide

WRInaute passionné
SELECT * FROM table2 t2 WHERE t2.nom = t1.nom

Elle est où la jointure ?

Il y a effectivement une différence au niveau des jointures, mais normalement ça fait planter ta requête ...
 

comparef

WRInaute occasionnel
Désolé, c'est plutot :
Code:
SELECT * FROM table1 t1,table2 t2 WHERE t2.nom = t1.nom

Enfaite ca ne plante pas mais c'est extremement long a charger (sachant qu'avant la mise a jour de PHP le chargement était instantatané).
 

tonguide

WRInaute passionné
Eventuellement, colles ta requête ici, peut-être qu'il y a un truc qui ne va pas ?

la virgule pour faire les jointures, c'est pas l'idéal. Fait plutôt JOIN ou LEFT JOIN (selon que ce soit stricte ou non).
 

comparef

WRInaute occasionnel
Il s'agit de la requete suivante :
Code:
$req=mysql_db_query($sql,"select * from table1 T1, table2 T2 WHERE (T1.chp1 = \"xxx\" OR T1.chp1 = \"xxx\") AND T2.chp2>'0' AND T1.chp3=T2.chp4 ORDER BY T1.hp5",$db) or die(mysql_error());

Je vais regarder pour JOIN.
 

tonguide

WRInaute passionné
Je pense qu'il s'agit plutôt d'un soucis d'INDEX, c'est à dire l'optimisation des 2 tables qui sont utilisés dans la requête.

Fait ta requête dans PhpMyAdmin, regarde que les champs qui sont utilisés pour les WHERE et le ORDER BY sont correctement indexés.

En tout cas, le soucis vient pas de PHP 5.
 

cedric_g

WRInaute accro
Bonsoir

Commences déjà par lister uniquement les champs utiles plutôt que de tous les renvoyer (avec *)

Selon le type d'utilisation que tu veux en faire, envisages aussi la mise en place d'un système de cache. J'utilise CacheLite, ça fonctionne très bien, est très simple à mettre en oeuvre et divise très sensiblement les appels MySQL et augmente les performances du site... Mais c'est selon l'usage que l'on en fait évidemment.
 

Discussions similaires

Haut