[PHP] Génération la plus rapide... et la plus fiable ?

Génération la plus rapide... et la plus fiable ? [PHP] - PHP - Programmation

Marsh Posté le 29-04-2004 à 18:06:01    

J'ai développé en PHP le site de ma boite.
 
Etant donné que je débutais en PHP à l'époque, je faisait ce que je pouvais... Pour faire simple, le code mélangeait les commandes "echo" et "mysql". Le seul problème c'est que parfois le navigateur internet (IE ou Mozilla) s'arrétait en cours de réception du fichier HTML ainsi généré... La page n'était pas complètement chargée.
 
J'ai donc revue entièrement le code et je n'envoi plus qu'un ou plusieurs "echo" lorsque mes traîtements sont entièrement finis. Les plantages de ce type ne se font plus du tout et l'affichage/téléchargement est plus rapide.
 
Mais voilà bien mon problème : Il arrive parfois (cela reste très rare, mais ça arrive) que la page ne se charge pas du tout (elle est vide). J'ai l'impression que la durée d'exécution de mon code est trop importante (je me trompe peut-être).
 
Evidemment ces désagrémments ne se font pas en local mais uniquement avec notre hébergeur et surtout lorsque l'on fait des essais en RTC ou ADSL chargé.
 
J'ai cherché dans pas mal de sites, mais je n'ai rien trouvé de très concluant... Pour mon hébergeur, la réponse c'est : "votre code doit être mal écrit" sauf que la même page avec les mêmes paramètres fonctionne très bien dans presque 100% des essais.
 
Hébergeur ? Problème de paramètres des fichiers de config ? Mon code est-il pourri ?
 
Un post sur le bench des hébergeurs montrent qu'une même page peut s'exécuter très rapidement à l'instant t et très lentement à t+1.
 
Edit: J'ai oublié la sous-catégorie...


Message édité par christophe_d13 le 29-04-2004 à 18:07:42
Reply

Marsh Posté le 29-04-2004 à 18:06:01   

Reply

Marsh Posté le 29-04-2004 à 18:58:25    

T'as essayé de mettre un "flush" pour forcer l'affichage ?


---------------
"Nous allons reformater les français" © Nicolas Sarkozy
Reply

Marsh Posté le 29-04-2004 à 19:02:56    

Ce qui doit pénaliser le temps d'exécution de ton script, ce sont les accès à la base.
 
As tu pensé à calculer le temps de génération des pages, à optimiser tes requètes SQL ?
 
Un exemple : au debut, je faisais sur les serveurs Free une requete SQL pour obtenir 1 champ d'une table (toutes les valeurs distinctes). En fonction de cette info, je faisais un boucle qui, avec une autre requête, allait chercher les infos à afficher.
 
Résultat, si la première requête contenait 100 lignes, je faisais donc 101 requetes SQL.
Le serveur plantait 1 fois sur 2. Temps d'execution du script : mini 4s.
 
J'ai maintenant le même résultat en 1 seule requête et le temps de génération de la page est passé à 0.02s
 
L'optimisation de tes requêtes SQL t'aidera surement


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 29-04-2004 à 19:42:48    

J'ai en fait 3 requètes dans mon code pour 3 tables... Je vois pas trop comment faire 1 requète pour 3 tables.
J'ai essayé le flush mais cela ne change rien.
 
Il faudrait que je fasse un test chez un autre hébergeur mais le site est assez tordu tout comme sa base... Pourtant y a pas de blob !
 
T509> Je pense que je vais afficher un petit texte (tout petit en blanc sur blanc) qui indiquera le temps de génération de la page. Bonne idée !
 
Le seul hic, c'est que quand ça va planter je ne connaîtrais pas le temps de génération de la page... sauf si je génère un fichier de rapport que je lis avec une autre session du navigateur... Je vais déjà faire ça (demain) pour tenter de comprendre.
 
Up: J'ai une fonction qui me modifie le html pour faire sauter un max de trucs inutiles (commentaire, espace, retour chariot...). La page fait au final 27Ko... A la base, elle faisait plus de 100Ko mais j'ai revue tout le code alléger les fonctions, ajouter du javascript pour générer des lignes répétés dans la page... Au final, j'ai fait sauter pas mal de code java... tout ça pour finir dans ce 27Ko...
 
Mais je ne fais pas que lire la base, je lis aussi en général une quinzaine de fichiers dont je formate le contenu...


Message édité par christophe_d13 le 29-04-2004 à 19:51:54
Reply

Marsh Posté le 30-04-2004 à 22:02:53    

Essaie de mettre dans ta page des appel à microtime() pour bencher ta page et afficher les temps de génération.
Tu verras ainsi si certaines parties du code sont pénalisantes.

Reply

Marsh Posté le 30-04-2004 à 23:45:30    

C'est ce que j'ai fait...
J'ai également revue l'architecture du code pour améliorer les lacunes...
J'arrive aujourd'hui des générations très courtes : 130 à 500ms pour la même page.
 
Mais je pense que mes problèmes viennent la génération de la page HTML.
Je m'explique : Dans une page, il y a une liste de produits. Chacun peu avoir sa propre construction et donc sa propre feuille de style... Même si plusieurs produits peuvent partager le même css.
 
Après encore de nombreux essais je penche plus pour un problème du code HTML. Il semble que ce dernier ne soit pas totalement téléchargé...  
 
Donc ma question : Lors d'un transfert du code HTML du serveur au client, dans quelle mesure ou pour quelles raisons la transmission peut être brutalement interrompue ?
 
Le contenu HTML a-t-il une influence ? (je ne pense pas, mais je me trompe peut-être).

Reply

Marsh Posté le 30-04-2004 à 23:54:31    

Up: En analysant la transmission, entre le client et le serveur... Le débit qui est normalement assez élevé (en ADSL) de 30 à 50Ko/s tombe parfois à 3 ou 4Ko/s... Mais qui est responsable ? Le FAI, l'hébergeur, la connexion, le navigateur ?

Reply

Marsh Posté le 01-05-2004 à 01:37:51    

L'hébergeur ;)

Reply

Marsh Posté le 01-05-2004 à 09:32:19    

KdZ' a écrit :

L'hébergeur ;)


 
Tu est sûr ? Si son script est vraiment lent, ne peut-il pas envoyer que 5 ko/s ?

Reply

Marsh Posté le 01-05-2004 à 13:57:13    

A mon avis soit ça vient des serveurs de ton hebergeur qui sont un peu leger, soit c un pb de bande passante (mais toujours au niveau de l'hebergement)

Reply

Marsh Posté le 01-05-2004 à 13:57:13   

Reply

Marsh Posté le 01-05-2004 à 15:04:11    

Je vais tenté de faire un essai chez free dés que je pourrais.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed