ホームページ  >  記事  >  バックエンド開発  >  php://outputとphp://stdoutの違いを詳しく解説

php://outputとphp://stdoutの違いを詳しく解説

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-16 11:12:462968ブラウズ

今回は、php://outputとphp://stdoutの違いと、php://outputとphp://stdoutを使用する際の注意事項について詳しく説明します。起きて見てください。

PHP の公式ドキュメントから答えを見つけてください。入力ストリーム php://stdin と php://input の説明は次のとおりです (出力ストリームの説明は非常に簡単です)。 2 つの違いを直接説明することはできませんが、注意深く比較すると次の情報が得られます: 1. どちらも読み取り専用ストリームです。 2. php://stdin は PHP プロセスの標準入力であり、php://input はリクエストボディの元のデータを読み取るために使用されます。この情報を使って、この 2 つの本質的な違いを正しく理解するにはどうすればよいでしょうか?

php://stdin プロセスの入力プロンプトに従い、PHP プロセスの実行プロセスを関連付け、それを SAPI の違いと組み合わせると、2 つの主な違いがわかります: php://stdin は入力ストリームですPHP プロセスの実行
ライフサイクル

データが流入する可能性があります (CLI での対話型入力など)。通常、データは PHP の実行時に 1 回しか読み取れません。 (詳細については、SAPI の実装を参照してください)。同様に、php://stdout と php://output の違いを取得できます。php://stdout は PHP プロセスの標準出力ストリームであり、php://output は返された結果データ ストリームです。 。

次のコードは結論を検証するために使用されます:

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;

ブラウザ側リクエスト、出力は次のとおりです:

message sent by output
message sent by stdout
message sent by print
SAPI:cli

コマンドラインの下、標準出力PHP プロセスのストリームと結果出力ストリームは両方ともターミナルを指し、すべてのメッセージが出力されます。ブラウザ側では、PHP プロセスの出力ストリームは無視され、結果のデータ ストリームのみが Web サーバーに送信されます。同時に、print 呼び出しと echo 呼び出しの情報が実行結果として結果出力ストリームに送信されるため、正常に表示されます。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

PHP は非常に大きな数値の整数セットを計算します

ニュースデータケースの詳細を取得する PHP+ajax 実装

以上がphp://outputとphp://stdoutの違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。