Optimisation PHP

Je cherche a optimiser encore et toujours :wink:

Est il préférable, au niveau vitesse de réponse du serveur, d'avoir des blocs php <? ?> quand on en a besoin comme par exemple

Code:
<html>
<head>
<?echo montitle();?>
</head>
<body>
<?echo untexte();?>
<br>
<?echo unautretexte();?>
</body>
</html>

ou bien avoir un seul bloc php avec toutes les lignes html en echo

Code:
<?
echo "<html>";
echo "<head>";
echo "<title>mon title</title>";
echo "<body>";
echo "un texte";
echo "<br>";
echo "un autre texte";
echo "</body>";
echo "</html>";
?>

Et, il y a t'il une différence, surtout au niveau vitesse d'affichage, entre les fonctions echo() et print() ?

Merci :wink:
 
Le plus rapide est d'avoir une variable $ma_page, de construire ta page dedans et de l'afficher à la fin.
 
Personnellement, j'opterais pour la première version, ne serait-ce que pour des raisons de clarté du code.

Pour la différence entre
Code:
echo()
et
Code:
print()
il y avait eu un test, mais je n'ai plus l'url sous la main...
 
La clarté est effectivement importante mais j'ai besoin d'optimiser le temps de réponse, y compris au détriment de la lisibilité du code :wink:
 
echo est marginalement plus rapide ( cf http://www.faqts.com/knowledge_base/vie ... d/1/fid/40 ).

Si tu as beaucoup de requêtes SQL dans ta page, tu peux aussi faire un système de cache : tu récupère REQUEST_URI, tu regardes si cela existe dans ton répertoire de cache, si c'est là et inférieur à 10mn tu output le fichier. Sinon tu construis ta page dans $ma_page, la sauvegarde dans le cache sous le nom REQUEST_URI et l'affiche avec un echo.
 
Effectivement echo devrait être plus rapide car il ne traite pas les insertions de format de données style %s ou %d et ne retourne pas de valeur, contrairement à print donc a priori moins de boulot en interne.

Pour les requêtes, je n'en ai que 5 par page (bien optimisées bien sur !), je ne sais pas si c'est beaucoup, mais c'est vraiment dans un soucis d'optimisation de la vitesse d'affichage :wink:
 
mewp a dit:
Le plus rapide est d'avoir une variable $ma_page, de construire ta page dedans et de l'afficher à la fin.
C'est un peu vrai, seulement cela demande plus de RAM, donc faut faire son choix :wink:
 
En optimisant le code HTML de ta page et tes images tu gagneras déjà 10 fois plus que tout ce que tu peux espérer gagner en optimisant ton PHP.
 
Tout dépend de la quantité de chose que tu vas stocker dans ta variable.

Il ne faut pas non plus s'alarmer, évite de stocker une page entière quoi :)
 
Tout dépend encore une fois de tes besoins, mais en règle générale l'accès disque est plus avantageux qu'une requête SQL (qui implique une connexion au préalable, ce qui prend du temps) :)
 
Dj_Apx a dit:
c'est plus rapide de lire le disque dur que d'accéder à une bdd ???? :o

Les accès disque se retrouvent dans ton cache mémoire, si tu lis tout le temps les mêmes fichiers c'est donc très rapide.
 
PyRoFLo a dit:
mewp a dit:
Le plus rapide est d'avoir une variable $ma_page, de construire ta page dedans et de l'afficher à la fin.
C'est un peu vrai, seulement cela demande plus de RAM, donc faut faire son choix :wink:

Un site que j'ai repris était programmé de la sorte (pas tout mais une partie de différente page été stoké dans une variable) Après avoir mis "echo" directement, le site a sensiblement était plus vite.

Edit : la différence se voit particulièrement pdt les heures de pointes
 
C'est la première formule qui est la plus rapide: ce n'est pas pénalisant de mettre plein de balises <? et ?>, par contre il faut essayer d'avoir le minimum de print ou d'echo.

Sinon, ce qui est vraiment beaucoup plus rapide, c'est de se passer de MySql en programmant soi même ses trucs... ;)
 
Remi L. a dit:
C'est la première formule qui est la plus rapide: ce n'est pas pénalisant de mettre plein de balises <? et ?>, par contre il faut essayer d'avoir le minimum de print ou d'echo.

Sinon, ce qui est vraiment beaucoup plus rapide, c'est de se passer de MySql en programmant soi même ses trucs... ;)
Difficile de se passer de MySQL quand le contenu est dynamique et a besoin d'être dans une base de données.
Par contre limiter le nombre de requêtes SQL, c'est bien, notamment par l'utilisation de cache.
Sur mon site par exemple (hormis pour les bannières de pub), y'a 0 requête SQL sur la page d'accueil, alors que y'a pourtant du contenu dynamique.
 
mewp a dit:
Le plus rapide est d'avoir une variable $ma_page, de construire ta page dedans et de l'afficher à la fin.


Comment ça ?

Faire un include de la page construite ?
Mais la construction se ferait comme dans le premier ou le second exemple montré.
J'ai donc du mal à saisir l'optimisation puisqu'on ne fait qu'ajouter une mise en variable...

Merci pour vos éclaircicements car ça m'interesse aussi :wink:
 
olivieri a dit:
Est il préférable, au niveau vitesse de réponse du serveur, d'avoir des blocs php <? ?> quand on en a besoin comme par exemple

Code:
<html>
<head>
<?echo montitle();?>
</head>
<body>
<?echo untexte();?>
<br>
<?echo unautretexte();?>
</body>
</html>

ou bien avoir un seul bloc php avec toutes les lignes html en echo

Code:
<?
echo "<html>";
echo "<head>";
echo "<title>mon title</title>";
echo "<body>";
echo "un texte";
echo "<br>";
echo "un autre texte";
echo "</body>";
echo "</html>";
?>

Et, il y a t'il une différence, surtout au niveau vitesse d'affichage, entre les fonctions echo() et print() ?

La difference entre les 2 manieres de coder est negligeable, à moins de faire une boucle de 1000, 10000 fois tu ne peux pas mesurer la difference. Et comme tu ne sers pas tes pages à tes clients au sortir d'une boucle 10000 et qu'en general tu ne peux servir que 3 clients en meme temps (et pas 10000) à cause des limitations sql: tu as ta reponse.

La premiere facon de faire a l'avantage d'etre plus lisible et plus facile à modifier.

Pour accélerer la generation de tes pages tu dois accélérer tes requetes sql, et faire du CACHE aussi souvent que possible. En faisant de la sorte j'ai accéléré la generation de mes pages entre 3 et 6 fois!

Je souscris egalement à l'idée d'accelerer les pages en en diminuant le poids (code html, images, scripts, css)
 
La premiere facon de faire a l'avantage d'etre plus lisible et plus facile à modifier.
Lisible ? permets-moi de trouver cette façon de faire très peu lisible, et de plus, peu pratique : comment fais-tu par exemple pour avoir un titre dynamique, etc... il serait nettement préférable de séparer le code php du balisage html.
 
Dj_Apx a dit:
La premiere facon de faire a l'avantage d'etre plus lisible et plus facile à modifier.
Lisible ? permets-moi de trouver cette façon de faire très peu lisible, et de plus, peu pratique : comment fais-tu par exemple pour avoir un titre dynamique, etc... il serait nettement préférable de séparer le code php du balisage html.

J'utilise la premiere facon de faire (enfin pas tel quel) et j'ai des titres dynamiques. Et il me semble qu'au contraire c'est avec la seconde methode qu'on melange le php et l'html. Pour ne plus avoir que du PHP. Un code quasi impossible à donner à un graphiste.

Je ne comprends pas ce que tu veux dire...
 
mewp a dit:
Le plus rapide est d'avoir une variable $ma_page, de construire ta page dedans et de l'afficher à la fin.

Non, c'est le plus lent, print et echo sont semsiblement équivalent, le plus rapide étant echo+output buffering.
Code:
<?php

require_once 'Benchmark/Timer.php';

$bench = new Benchmark_Timer;

$bench->start();
$bench->setMarker('Début du script');

for ( $i=0; $i<1000000; $i++ ) {
  echo 'a';
}

$bench->setMarker('Echo');


for ( $i=0; $i<1000000; $i++ ) {
  print 'a';
}

$bench->setMarker('Print');

ob_start();
for ( $i=0; $i<1000000; $i++ ) {
  echo 'a';
}
ob_end_flush();

$bench->setMarker('Output buffering');



for ( $i=0; $i<1000000; $i++ ) {
  $content .= 'a';
} 
echo $content;

$bench->setMarker('Concatenation');

$bench->stop();

$bench->display();

?>
 
M.o.n.d.i.a.n.i a dit:
Dj_Apx a dit:
La premiere facon de faire a l'avantage d'etre plus lisible et plus facile à modifier.
Lisible ? permets-moi de trouver cette façon de faire très peu lisible, et de plus, peu pratique : comment fais-tu par exemple pour avoir un titre dynamique, etc... il serait nettement préférable de séparer le code php du balisage html.

J'utilise la premiere facon de faire (enfin pas tel quel) et j'ai des titres dynamiques. Et il me semble qu'au contraire c'est avec la seconde methode qu'on melange le php et l'html. Pour ne plus avoir que du PHP. Un code quasi impossible à donner à un graphiste.

Je ne comprends pas ce que tu veux dire...
Ce que je veux dire, c'est qu'avec un système de templates à la phpBB, ton code PHP et ton HTML sont bien séparés.
Et même en faisant plus simple, faire tous les traitements d'abord et ensuite inclure un fichier html "squelette", c'est plus propre quand même.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut