こんにちは、ムーシアさん!
rainbird があなたに短いメッセージを送りました:
バックグラウンドで実行するデーモンをたくさん書きました。使い方はとても簡単ですが、コンテンツをパイプ経由で渡したいのですが、その方法がわかりません。 echo "aaaa" |a .php、a.php と同様に、echo の内容を取得する方法について、何かアドバイスがあればお願いします
今日メッセージを受け取りましたので、解決策を共有したいと思います。 :
実際、シェルの | は実際には前の標準を表し、出力は後者の標準入力として機能します。実装はパイプを通じて実装されますが、
PHP コードを記述するときに基礎となる操作を知る必要はありません。標準入力として直接読み取ることができます:
以下は実験的なコードです:
コードをコピーします コードは次のとおりです:
$fp = fopen("php:/ /stdin", "r");
$s = '';
while (!feof($fp))
{
$s .= fgets($fp, 128);
}
var_dump($s);
fclose($ fp);
テストメソッド:
コードは次のとおりです: ls -lh | php_read_pipe.php Rainbird はまた、より単純なコード:
file_get _contents( 'php://stdin')
転送するデータが多い場合、一般的には 4K ごとに 1 回転送されます。
転送が完了するまで。
file_get_contents('php://stdin') を使用するだけでは不可能な場合があります。もしそうなら、私はいつでも待っています。
別々に処理すると、ある程度の量を読み取ってから、その一部を処理することができます。次に、メモリの一部を解放します。
たとえば、すべてのファイルをループしたいとします。こんな感じで扱えます
find / | php php php_read_pipe.php
具体的な状況に応じて分析していきます。
http://www.bkjia.com/PHPjc/321414.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/321414.html技術記事こんにちは、ムーシアさん! Rainbird から短いメッセージが届きました。バックグラウンドで実行するデーモンをたくさん書きました。とても使いやすいですが、コンテンツをパイプ経由で渡したいのですが、その方法がわかりません。