ホームページ  >  記事  >  php教程  >  PHPはシェルパイプによって送信されたコンテンツを読み取ります

PHPはシェルパイプによって送信されたコンテンツを読み取ります

WBOY
WBOYオリジナル
2016-06-13 12:18:04744ブラウズ

こんにちは、ムーシアさん!
Rainbird があなたに短いメッセージを送りました:
バックグラウンドで実行するデーモンをたくさん書きましたが、使い方はとても簡単ですが、コンテンツをパイプ経由で渡したいのですが、その方法がわかりません。これを実現するには、echo " aaaa" |a.php、a.php と同様に、エコーの内容を取得する方法がありますか?
今日メッセージを受け取りました。解決策を共有したいと思います。 :
実際には、シェルの | 上記は、前の出力の標準出力が次の出力の標準入力として使用されることを示しています。実装はパイプを通じて実装されますが、
PHP コードを記述するときに基礎となる操作を知る必要はありません。標準入力として直接読み取ることができます:
以下は実験的なコードです:

コードをコピーします コードは次のとおりです:


$fp = fopen("php://stdin", "r")
$s = ''
while (!feof($fp) ))
{
$s .= fgets($fp, 128);
var_dump($s);
; 🎜>

テスト方法:



コードをコピー

コードは次のとおりです。 php php_read_pipe.php Rainbird は、より単純なコードも提供します。

file_get_contents('php://stdin')

転送するデータが大量にある場合、一般的に、 4K ごとに 1 回転送されます。
転送が完了するまで。これは、
file_get_contents('php://stdin') を使用するだけでは不可能な場合があります。もしそうなら、私はいつでも待っています。

別々に処理すると、ある程度の量を読み込んでから一部を処理することができます。次に、メモリの一部を解放します。
たとえば、すべてのファイルをスキャンしたいとします。
find / | php php php_read_pipe.php
具体的な状況に基づいて分析します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。