mécanisme de l'interprétation du php

mécanisme de l'interprétation du php - PHP - Programmation

Marsh Posté le 12-05-2004 à 15:03:45    

Salut,
 
J'aimerais savoir comment le serveur apache parse les fichiers php. Plus précisément, j'aimerais savoir s'il crée un fichier temporaire (ou garde le tout dans sa mémoire), puis l'envoie au client quand il a terminé, ou s'il interprète le fichier php et envoie au fur et à mesure ce qu'il a crée au client à l'aide d'un buffer (d'où un temps plus long entre le début de l'interprétation du fichier et de la fin).
 
Pour être sur d'etre bien compris:
Hyptohèse 1/ le serveur ouvre le fichier - il l'interprète - il a fini de l'interpréter - il envoie le tout au client
Hyptohèse 2/ le serveur ouvre le fichier - il commence à interpréter 2-3 lignes - il envoie au client les 2-3 lignes interprétées -quand le client a recu les 2-3 lignes, il fait les 2-3 lignes suivantes - il envoie les 2-3 suivantes interprétées, etc... jusk'à la fin du fichier.
 
Ayant fait des tests, je penche pour la deuxième solution, j'ai crée un fichier php me donnant l'heure au debut du script et à la fin du script, et entre temps il crée un max de balise html ki servent à rien. Le fichier généré fait environ 80Ko. Sur ma machine en locale, il m'affiche la page en 280-300ms. Sur une machine distante, il met 2800-3000ms. J'ai une freebox, la différence colle pas trop mal avec mon upload (256Kb).
Donc, je pense pour la deuxième hypothèse, si kelk'1 connaissant bien le fonctionnement des serveurs http pouvait me confirmer et m'en dire plus. Merchi ^^
 
Terkae.

Reply

Marsh Posté le 12-05-2004 à 15:03:45   

Reply

Marsh Posté le 12-05-2004 à 15:05:16    

apache parse pas le php. Il le refile à l'interpréteur php et récupère ce que ce dernier lui donne.

Reply

Marsh Posté le 12-05-2004 à 15:09:53    

skeye a écrit :

apache parse pas le php. Il le refile à l'interpréteur php et récupère ce que ce dernier lui donne.


 
Alors pourkoi le temps affiché diffère lorsque le débit de ma connexion est différent ?  :sweat:

Reply

Marsh Posté le 12-05-2004 à 15:15:13    

terkae a écrit :

Alors pourkoi le temps affiché diffère lorsque le débit de ma connexion est différent ?  :sweat:


Apache ne confirme peut-être la réception d'un "echo" à l'interpréteur que lorsqu'il a lui même tout rebalancé au client...?

Reply

Marsh Posté le 12-05-2004 à 15:16:50    

Le temps d'exécution depend totalement du server et non pas de ta connexion, logique.
Client ---> Server[traitement] --(html)--> Client.
 
Il différe de combien environs, car c'est une différence de quelque milliseconde dit toi que tes pas tous seul sur le server si t'es chez un heberger.

Reply

Marsh Posté le 12-05-2004 à 15:17:40    

Berceker United a écrit :

Le temps d'exécution depend totalement du server et non pas de ta connexion, logique.
Client ---> Server[traitement] --(html)--> Client.
 
Il différe de combien environs, car c'est une différence de quelque milliseconde dit toi que tes pas tous seul sur le server si t'es chez un heberger.


Ne pas tout lire, c'ets mal!:o

Reply

Marsh Posté le 12-05-2004 à 15:22:13    

ça peut dépendre de la connexion: PHP génère le truc et Apache le balance au fur et à mesure, du coup, PHP est ralenti parce qu'il attend qu'Apache rende la main pour continuer à générer la page. Mais si tu bufferises tout, tu diminueras ton temps de génération de page.
 
J'ai constaté ça avec une bête page qui prenait 1 seconde de temps de génération. Avec les ob_start() et ob_end_flush() qui vont bien, tu ramèneras le temps de génération à une mesure réaliste.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 12-05-2004 à 15:22:55    

drasche a écrit :

ça peut dépendre de la connexion: PHP génère le truc et Apache le balance au fur et à mesure, du coup, PHP est ralenti parce qu'il attend qu'Apache rende la main pour continuer à générer la page. Mais si tu bufferises tout, tu diminueras ton temps de génération de page.
 
J'ai constaté ça avec une bête page qui prenait 1 seconde de temps de génération. Avec les ob_start() et ob_end_flush() qui vont bien, tu ramèneras le temps de génération à une mesure réaliste.


J'avais raison! \o/

Reply

Marsh Posté le 12-05-2004 à 15:29:18    

drasche a écrit :

ça peut dépendre de la connexion: PHP génère le truc et Apache le balance au fur et à mesure, du coup, PHP est ralenti parce qu'il attend qu'Apache rende la main pour continuer à générer la page. Mais si tu bufferises tout, tu diminueras ton temps de génération de page.
 
J'ai constaté ça avec une bête page qui prenait 1 seconde de temps de génération. Avec les ob_start() et ob_end_flush() qui vont bien, tu ramèneras le temps de génération à une mesure réaliste.


 
merci de vos réponses, c'est donc bien le php qui attend apache qui attend le client ^^.
Merci aussi pour les 2 fonctions, ca va m'aider  :jap:  
 
pour info, mes sources pour les tests :
<html>
<head></head>
<body>
<?
function getmicrotime()
{
  list($usec, $sec) = explode(" ",microtime());
 return ((float)$usec + (float)$sec);
};
 
$time_start = getmicrotime();
for ($i=1; $i<1000; $i++){
echo "<a href=\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\">b</a>";
if ($i%40==0) echo "</br>";
}
 
$time_end=@getmicrotime();
$time=$time_end-$time_start;
echo"</br>";
$time=round($time*1000);
echo "Page genérée en $time ms</br>";
?>
</body>
</html>

Reply

Marsh Posté le 12-05-2004 à 15:29:27    

il me semble qu'il existe une option pour bufferiser totalement la sortie, ce qui permet d'envoyer des entêtes HTTP après avoir commencé à envoyer du contenu. J'ai la flemme de lire la doc pour vérifier si mes souvenirs sont bons.
 


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 12-05-2004 à 15:29:27   

Reply

Marsh Posté le 12-05-2004 à 15:32:17    

nraynaud a écrit :

il me semble qu'il existe une option pour bufferiser totalement la sortie,  


 

drasche a écrit :

Avec les ob_start() et ob_end_flush()  


 
:whistle:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-05-2004 à 15:35:25    

la lecture de ce qui a déjà été posté, c'est pour les faibles.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 12-05-2004 à 15:36:16    

wai jme sert de ob_start et flush aussi [:dawa]
 
non seulement on epargne apache/parser, mais en plus on peu utliser les header comme c'est pas permi [:dawa]

Reply

Marsh Posté le 12-05-2004 à 15:59:27    

il s'agit de l'option output_buffering
On peut lui précisez la taille maximale de buffer à utiliser.
Le problème, c'est que ca s'applique à tous les fichiers par la suite...
 

Reply

Marsh Posté le 12-05-2004 à 16:02:33    

nraynaud a écrit :

la lecture de ce qui a déjà été posté, c'est pour les faibles.


ptain dans la catégorie excuses bidons, on en tient un bon là :D


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 12-05-2004 à 16:17:44    

drasche a écrit :

ptain dans la catégorie excuses bidons, on en tient un bon là :D

C'est pas une excuse bidon, c'est parce que je démarre une psychotérapie que je peux pas trop me mettre en situation de faiblesse, pour pas tout ruiner dès le départ ...


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 12-05-2004 à 18:05:10    

drasche a écrit :

ptain dans la catégorie excuses bidons, on en tient un bon là :D


 
C'est pas crédible surtout. Une bonne excuse bidon c'est une excuse crédible mais qui semble un peu trop facile pour justifier la situation :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-05-2004 à 21:58:12    

bien compris maître [:prosterne2] :D


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 12-05-2004 à 22:06:43    

maitre antaipai? [:totoz]

Reply

Marsh Posté le 12-05-2004 à 22:13:44    

bin oui :o
maître es excuses bidons :o


Message édité par drasche le 12-05-2004 à 22:14:10

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Sujets relatifs:

Leave a Replay

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