mécanisme de l'interprétation du php - PHP - Programmation
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.
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 ?
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 ? |
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...?
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.
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. |
Ne pas tout lire, c'ets mal!
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.
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'avais raison! \o/
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. |
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
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>
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.
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() |
Marsh Posté le 12-05-2004 à 15:35:25
la lecture de ce qui a déjà été posté, c'est pour les faibles.
Marsh Posté le 12-05-2004 à 15:36:16
wai jme sert de ob_start et flush aussi
non seulement on epargne apache/parser, mais en plus on peu utliser les header comme c'est pas permi
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...
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à
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à |
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 ...
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à |
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
Marsh Posté le 12-05-2004 à 21:58:12
bien compris maître
Marsh Posté le 12-05-2004 à 22:13:44
bin oui
maître es excuses bidons
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.