2012-07-06 3 views
3

J'écris un plugin de widget wordpress. Il doit générer un certain code html qui devrait ressembler à ceciCe qui est plus rapide: tampon de sortie ou echo

<a href="link1">link1title</a> 
<a href="link2">link2title</a> 
<a href="link3">link3title</a> 
<a href="link4">link4title</a> 
<a href="link5">link5title</a> 

Je suis en cours d'exécution d'une boucle pour sortir les liens et les titres de 2 tableaux, et je peux le faire de deux façons différentes:

<?php for ($i = 0; $i < $x; $i++) 
    echo '<a href="'.$links[$i].'">'.$titles[$i].'</a>'; 
?> 

Ou je peux utiliser quelque chose comme ceci:

<?php ob_start(); 
for ($i = 0; $i < $x; $i++) {?> 
    <a href="<?php echo $links[$i];?>"><?php echo $titles[$i];?></a> 
<?php ob_get_flush();?> 

L'exemple est trivial. Il y a beaucoup plus de code html, et beaucoup plus de variables impliquées. Puisqu'il existe une différence de vitesse entre printf et cout en c/C++, je me demandais s'il y avait une différence de vitesse entre l'utilisation du tampon de sortie et l'écho.

Aussi, lequel est préférable d'utiliser?

Répondre

3

Bien sûr qu'il y a. Avec echo, vous videz le flux de sortie. Avec ob_start, vous créez un tampon qui doit ensuite être traité (l'argument facultatif se rapportant à ob_start avant d'être déversés dans le flux de sortie.

Depuis le second est essentiellement « faire des choses, alors faites exactement le même que le premier un », il est évident qu'il sera plus lent.

Cependant, si elle est utilisée correctement, alors les avantages peuvent dépasser de loin les inconvénients.

+0

que voulez-vous dire par _Si utilisé correctly_? –

+2

' ob_start' est destiné à être Utilisé avec un rappel pour effectuer un post-traitement sur le contenu avant de l'envoyer au serveur.Il a l'effet secondaire que vous pouvez utiliser la fonctionnalité 'header' à tout moment si 'ob_start' est appelé avant d'envoyer quoi que ce soit, mais mis à part cela, l'appeler sans but est inutile. –

+0

Vous oubliez énormément l'inconvénient majeur de transmettre du contenu via le réseau au client chaque fois que vous appelez l'écho, n'est-ce pas? à moins que je ne comprenne pas ce que le point de 'ob_start' est de toute façon, je pensais qu'il avait quelque chose à faire (avec beaucoup d'autres choses) à empêcher le serveur d'avoir à passer du contenu via internet chaque fois que l'echo est appelé ... : //stackoverflow.com/a/2832179/576767 –

Questions connexes