ob_get_contents () est utilisé pour obtenir le contenu dans le tampon de sortie PHP actuel. Combiné avec ob_start () , il nous permet d'abord d'enregistrer le contenu de sortie, plutôt que de l'envoyer directement au navigateur, afin que nous puissions traiter ou stocker la sortie secondaire.
ob_start(); // Allumez le tampon de sortie
echo "Hello, world!";
$content = ob_get_contents(); // Obtenez le contenu tampon
ob_end_clean(); // Fermez le tampon et effacez le contenu
echo "Captured content: " . $content;
Le code ci-dessus capturera la sortie de la chaîne par Echo , le stockera dans un contenu $ , puis le sortira.
Les demandes asynchrones se réfèrent généralement au client envoyant une demande au serveur via JavaScript (comme AJAX) et obtenant le résultat de retour sans rafraîchir la page. Lorsque PHP traite ces demandes du côté serveur, il doit parfois capturer le contenu de sortie, puis le renvoyer vers l'extrémité après le traitement.
Grâce à ob_get_contents () , les résultats d'exécution des demandes asynchrones (tels que le contenu rendu par un modèle) peuvent être capturés en arrière-plan, puis retournés à l'avant en réponse, améliorant la flexibilité.
Supposons que vous envoyiez une demande à async_handler.php via AJAX, PHP doit renvoyer un contenu généré dynamiquement. Nous utilisons ob_get_contents () pour capturer la sortie et le renvoyer à l'appelant.
<?php
// Allumez la tampon de sortie
ob_start();
// Simuler la logique de traitement asynchrone
echo "<div>C'est ce qui est retourné de manière asynchrone,Heure actuelle:" . date('H:i:s') . "</div>";
// Contenu du tampon de capture
$content = ob_get_contents();
// Fermez et nettoyez le tampon
ob_end_clean();
// Sortez le contenu capturé en réponse
echo $content;
?>
$.ajax({
url: 'http://gitbox.net/async_handler.php',
method: 'GET',
success: function(response) {
// Insérez le contenu retourné dans la page
$('#result').html(response);
},
error: function() {
alert('Échec de la demande');
}
});
Parfois, nous voulons initier des demandes asynchrones dans PHP et obtenir les résultats, qui peuvent également être implémentés à l'aide de ob_get_contents () combinés avec Curl .
<?php
function getAsyncContent($url) {
ob_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
echo $result; // Sortir curl Retour au contenu
$content = ob_get_contents();
ob_end_clean();
return $content;
}
$url = "http://gitbox.net/async_handler.php";
$response = getAsyncContent($url);
echo "Résultat de la demande asynchrone sur le serveur:" . $response;
?>
ob_get_contents () vous permet de capturer le contenu du tampon de sortie des scripts PHP et de traiter de manière flexible les données de sortie.
Dans le traitement des demandes asynchrones, les résultats sont capturés à l'aide de tampons pour contrôler et renvoyer facilement le contenu dynamique.
Qu'il s'agisse d'une demande AJAX frontale ou d'un serveur PHP initie des appels asynchrones, ob_get_contents () peut vous aider à obtenir et à utiliser la sortie, à améliorer l'évolutivité et la maintenabilité de votre application.
Avec cette technologie maîtrisée, vous serez plus à l'aise lorsque vous traitez avec une logique asynchrone complexe.