Position actuelle: Accueil> Derniers articles> Quels sont les usages communs de Ob_start et OB_END_CLEAN et leurs principales différences?

Quels sont les usages communs de Ob_start et OB_END_CLEAN et leurs principales différences?

gitbox 2025-09-18

[Quelles sont les usages communs d'OB_START et OB_END_CLEAN et leurs principales différences? ]]

Dans PHP, OB_START et OB_END_CLEAN sont deux fonctions de fonctionnement de tampon de sortie très utiles. Ils sont souvent utilisés pour contrôler la sortie du script, en évitant la sortie de données directement dans le navigateur, mais mettez-les en mémoire jusqu'à ce que vous décidiez quand les sortir. Ceci est particulièrement utile pour l'optimisation des performances, le traitement du contenu ou l'envoi d'en-têtes HTTP à l'en-tête de la page.

Qu'est-ce qu'un tampon de sortie?

Le mécanisme de tampon de sortie de PHP nous permet de stocker des sorties de script (telles que HTML, JavaScript ou texte brut) dans un tampon en mémoire au lieu de les envoyer directement au navigateur. En utilisant la mise en mémoire tampon de sortie, nous pouvons effectuer un contrôle plus fin avant que la page n'envoie la sortie. Ceci est très utile pour certains scénarios où la sortie doit être manipulée ou modifiée.

Le rôle d' OB_START

La fonction OB_START est utilisée pour démarrer le tampon de sortie. Lorsque ob_start () est appelé, PHP démarre la sortie du cache au lieu de l'envoyer directement au navigateur.

grammaire:

 <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span></span>

Après avoir appelé ob_start () , tout le contenu de sortie sera stocké dans le tampon interne au lieu d'être affiché immédiatement sur le navigateur. À l'heure actuelle, vous pouvez effectuer un traitement, comme la modification du contenu mis en cache ou l'envoi du contenu mis en cache dans un fichier ou une base de données.

Exemple:

 <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();  </span><span><span class="hljs-comment">// Démarrer la tampon de sortie</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Hello, world!"</span></span><span>;  </span><span><span class="hljs-comment">// Le contenu de sortie ne sera pas affiché immédiatement</span></span><span>
</span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();  </span><span><span class="hljs-comment">// Obtenez le contenu du tampon actuel</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// Effacer le tampon et éteindre le tampon de sortie</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"The buffered content: "</span></span><span> . </span><span><span class="hljs-variable">$content</span></span><span>;  </span><span><span class="hljs-comment">// Sortir "The buffered content: Hello, world!"</span></span><span>
</span></span>

Dans l'exemple ci-dessus, ob_start () démarre le tampon et toute sortie de contenu via Echo est temporairement mise en cache. Ensuite, la fonction ob_get_contents () obtient le contenu dans le tampon et nettoie le tampon après avoir appelé ob_end_clean () .

Le rôle d' OB_END_CLEAN

OB_END_CLEAN est utilisé pour fermer le tampon de sortie actuel et effacer le contenu dans le tampon. Autrement dit, il rejette toute la sortie dans le tampon actuel au lieu de l'envoyer au navigateur.

grammaire:

 <span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();
</span></span>

Cette fonction est généralement utilisée avec ob_start () pour nettoyer le tampon après avoir obtenu ou manipulé le contenu du tampon.

Exemple:

 <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();  </span><span><span class="hljs-comment">// Démarrer la tampon de sortie</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is buffered."</span></span><span>;  </span><span><span class="hljs-comment">// Sortir不会立即显示</span></span><span>

</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// Effacer le tampon et fermez-le</span></span><span>

</span><span><span class="hljs-comment">// Sortir什么都不会显示,Parce que le contenu du tampon a été effacé</span></span><span>
</span></span>

Les principales différences entre ob_start et ob_end_clean

  • OB_START est utilisé pour démarrer le tampon de sortie et enregistrer temporairement la sortie suivante dans le tampon.

  • OB_END_CLEAN est utilisé pour fermer le tampon de sortie actuel et effacer tout le contenu du tampon sans rien sortir du navigateur.

La combinaison de ces deux fonctions vous permet de contrôler de manière flexible le contenu de sortie, tel que la modification des informations d'en-tête HTTP sans envoyer de sortie ou effectuer un traitement de sortie spécifique lorsque la page est chargée.

Utilisation courante

  1. Modifiez la sortie avant d'envoyer des informations d'en-tête HTTP <br> La mise en mémoire tampon de sortie peut être utilisée pour éviter les erreurs de "en-têtes déjà envoyées" de PHP, car les en-têtes HTTP ne peuvent être envoyés qu'après que le contenu du tampon de sortie est effacé ou envoyé. Si vous devez envoyer des en-têtes HTTP personnalisés avant le début du script, vous pouvez utiliser ob_start () .

     <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();  </span><span><span class="hljs-comment">// Démarrer la tampon de sortie区</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: http://example.com"</span></span><span>);  </span><span><span class="hljs-comment">// Modifier les informations d&#39;en-tête</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// Effacer le tampon et fermez-le</span></span><span>
    </span></span>
  2. Contenu de la page de cache <br> Dans certains scénarios d'optimisation des performances, la sortie de la page de cache peut réduire considérablement le temps de réponse des demandes ultérieures. Par exemple, le contenu du tampon de sortie peut être stocké dans un fichier pour éviter les opérations de requête de base de données en double.

     <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();  </span><span><span class="hljs-comment">// Démarrer la tampon de sortie</span></span><span>
    </span><span><span class="hljs-keyword">include</span></span><span>(</span><span><span class="hljs-string">"content.php"</span></span><span>);  </span><span><span class="hljs-comment">// 生成Sortir</span></span><span>
    </span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();  </span><span><span class="hljs-comment">// Obtenir du contenu mis en cache</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// Effacer le tampon</span></span><span>
    
    </span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-string">"cached_page.html"</span></span><span>, </span><span><span class="hljs-variable">$content</span></span><span>);  </span><span><span class="hljs-comment">// Stocker le contenu mis en cache aux fichiers</span></span><span>
    </span></span>
  3. Modification ou redirection du contenu <br> Si vous devez modifier le contenu HTML généré ou le rediriger, le tampon de sortie est également très pratique. Par exemple, vous pouvez obtenir le contenu du tampon via ob_get_contents () , puis le modifier au besoin.

     <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Hello, this is the original content!"</span></span><span>;
    </span><span><span class="hljs-variable">$buffer</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();  </span><span><span class="hljs-comment">// Obtenez le contenu tampon</span></span><span>
    
    </span><span><span class="hljs-comment">// Modifier le contenu</span></span><span>
    </span><span><span class="hljs-variable">$modified_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_replace</span></span><span>(</span><span><span class="hljs-string">"original"</span></span><span>, </span><span><span class="hljs-string">"modified"</span></span><span>, </span><span><span class="hljs-variable">$buffer</span></span><span>);
    
    </span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// Effacer le tampon</span></span><span>
    
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$modified_content</span></span><span>;  </span><span><span class="hljs-comment">// Sortir修改后的内容</span></span><span>
    </span></span>

Résumer

OB_START et OB_END_CLEAN sont de puissants outils de mise en mémoire tampon de sortie en PHP qui fournissent un contrôle de sortie flexible, permettant aux développeurs de modifier, de cache ou de éliminer le contenu de sortie avant d'envoyer la sortie. En utilisant ces deux fonctions de manière appropriée, certains problèmes courants peuvent être effectivement évités, tels que les erreurs d'en-tête HTTP, l'affichage précoce du contenu de sortie ou la réduction des calculs inutiles lors de l'optimisation des performances.