Grandes lenteurs depuis le passage a PHP 5

comparef
WRInaute impliqué
WRInaute impliqué
 
Messages: 505
Inscription: 5 Avr 2005

Grandes lenteurs depuis le passage a PHP 5

Message le Ven Avr 25, 2008 19:33

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é
WRInaute passionné
 
Messages: 1406
Inscription: 28 Nov 2003

Message le Ven Avr 25, 2008 19:54

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
WRInaute occasionnel
 
Messages: 415
Inscription: 6 Jan 2004

Message le Ven Avr 25, 2008 22:12

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 accro
WRInaute accro
 
Messages: 3722
Inscription: 4 Oct 2002

Message le Lun Avr 28, 2008 6:52

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 impliqué
WRInaute impliqué
 
Messages: 505
Inscription: 5 Avr 2005

Message le Lun Avr 28, 2008 11:39

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 impliqué
WRInaute impliqué
 
Messages: 505
Inscription: 5 Avr 2005

Message le Dim Mai 04, 2008 10:49

Bonjour,

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

Type :
Code: Tout sélectionner
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é
WRInaute passionné
 
Messages: 1406
Inscription: 28 Nov 2003

Message le Dim Mai 04, 2008 12:51

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 impliqué
WRInaute impliqué
 
Messages: 505
Inscription: 5 Avr 2005

Message le Dim Mai 04, 2008 14:49

Désolé, c'est plutot :
Code: Tout sélectionner
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é
WRInaute passionné
 
Messages: 1406
Inscription: 28 Nov 2003

Message le Dim Mai 04, 2008 16:46

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 impliqué
WRInaute impliqué
 
Messages: 505
Inscription: 5 Avr 2005

Message le Dim Mai 04, 2008 18:23

Il s'agit de la requete suivante :
Code: Tout sélectionner
$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é
WRInaute passionné
 
Messages: 1406
Inscription: 28 Nov 2003

Message le Dim Mai 04, 2008 18:45

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
WRInaute accro
 
Messages: 3552
Inscription: 18 Jan 2006

Message le Dim Mai 04, 2008 19:01

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.

comparef
WRInaute impliqué
WRInaute impliqué
 
Messages: 505
Inscription: 5 Avr 2005

Message le Dim Déc 14, 2008 18:09

Bonsoir,

J'ai mis des index sur certains champs, et ca a résolu le problème.

Merci pour votre aide.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités