Explication détaillée de la différence entre php://output et php://stdout

php中世界最好的语言
Libérer: 2023-03-25 21:08:01
original
3023 Les gens l'ont consulté

Cette fois, je vais vous apporter une explication détaillée des différences entre php://output et php://stdout, et précautions d'utilisation de php://output et php://stdoutDe quoi s’agit-il ? Voici des cas concrets.

Trouvez la réponse dans la documentation officielle de PHP. Les explications des flux d'entrée php://stdin et php://input sont les suivantes (l'explication du flux de sortie est trop brève) :

php://stdin
php://stdin, php://stdout and php://stderr allow direct access to the corresponding input or output stream of the PHP process. The stream references a duplicate file descriptor, so if you open php://stdin and later close it, you close only your copy of the descriptor-the actual stream referenced by STDIN is unaffected. Note that PHP exhibited buggy behavior in this regard until PHP 5.2.1. It is recommended that you simply use the constants STDIN, STDOUT and STDERR instead of manually opening streams using these wrappers.
php://stdin is read-only, whereas php://stdout and php://stderr are write-only.
php://input
php://input is a read-only stream that allows you to read raw data from the request body. In the case of POST requests, it is preferable to use php://input instead of $HTTP_RAW_POST_DATA as it does not depend on special php.ini directives. Moreover, for those cases where $HTTP_RAW_POST_DATA is not populated by default, it is a potentially less memory intensive alternative to activating always_populate_raw_post_data. php://input is not available with enctype=”multipart/form-data”.
Copier après la connexion
Le document n'explique pas directement la différence entre les deux. Une comparaison minutieuse peut conduire aux informations suivantes : 1. Les deux sont des flux en lecture seule 2. php://stdin est ; l'entrée standard du processus PHP, php:/ /input est utilisée pour lire les données originales du corps de la requête. Avec ces informations, comment comprendre correctement les différences essentielles entre les deux ?

Suivez les invites de saisie du processus php://stdin, associez le processus d'exécution du processus PHP et combinez-le avec les différences dans SAPI, vous pouvez obtenir les principales différences entre les deux : php:/ /stdin est le flux d'entrée du processus PHP. Il peut y avoir des données entrantes pendant l'exécution

cycle de vie (comme une entrée interactive sous CLI) ; Généralement, les données ne peuvent être lues qu'une seule fois (voir SAPI pour plus de détails). De la même manière, nous pouvons faire la différence entre php://stdout et php://output : php://stdout est le flux de sortie standard du processus PHP, et php://output est le flux de données de résultat renvoyé. .

Le code suivant est utilisé pour vérifier la conclusion :

// file: test.php
file_put_contents("php://output", "message sent by output" . PHP_EOL);
file_put_contents("php://stdout", "message sent by stdout" . PHP_EOL);
print("message sent by print" . PHP_EOL);
echo "SAPI:" , PHP_SAPI , PHP_EOL;
Copier après la connexion
Le fichier d'exécution de la ligne de commande, le résultat est le suivant :

message sent by output
message sent by stdout
message sent by print
SAPI:cli
Copier après la connexion
Requête côté navigateur, le résultat est le suivant :

message sent by output
message sent by print
SAPI:fpm-fcgi
Copier après la connexion
Sous la ligne de commande, le flux de sortie standard et le flux de sortie de résultat du processus PHP sont dirigés vers le terminal et tous les messages sont imprimés. Côté navigateur, le flux de sortie du processus PHP est ignoré et seul le flux de données résultant est envoyé au serveur Web. Dans le même temps, les informations des appels d'impression et d'écho sont envoyées au flux de sortie des résultats en tant que résultats d'exécution, elles sont donc affichées normalement.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

PHP calcule l'ensemble entier de très grands nombres

Explication détaillée du cas d'obtention de nouvelles données utilisant PHP+ajax

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!