Maison > Article > développement back-end > Explication détaillée de la différence entre php://output et php://stdout
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) :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 Le code suivant est utilisé pour vérifier la conclusion :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”.
// 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;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:cliRequête côté navigateur, le résultat est le suivant :
message sent by output message sent by print SAPI:fpm-fcgiSous 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!