php 讀取shell管道傳輸過來的內容_PHP教程

來源:互聯網
上載者:User
暮夏,您好!
rainbird給您發了短訊息:
已經寫了不少後台啟動並執行deamon了.用的挺順手的,但是我現在想擷取管道傳過來的內容,不知道咋實現,類似echo "aaaa" |a.php,a.php怎麼獲得echo的內容,不知道您有什麼高見.
今天收到一條訊息,解決的方法給大家分享一下:
實際上,shell 的 | 實際上表示的是 前一個的 標準輸出 作為後一個的標準輸入。雖然實現是通過pipe來實現的,
但是你寫php代碼的時候不需要知道底層的運作。你直接作為標準輸入讀取就可以了:
下面是一個實驗代碼:
複製代碼 代碼如下:
$fp = fopen("php://stdin", "r");
$s = '';
while (!feof($fp))
{
$s .= fgets($fp, 128);
}
var_dump($s);
fclose($fp);
?>

測試方法:
複製代碼 代碼如下:
ls -lh | php php_read_pipe.php

Rainbird 還給出更加簡單的代碼:
file_get_contents('php://stdin')
如果是有很多資料要傳輸過來,一般來說,是每4K傳輸一次。
直到傳輸完成。那可能不能簡單的使用:
file_get_contents('php://stdin')。這樣的話,一直會在等待。
分開處理的話,能夠,讀取一定的量後處理一部分。然後釋放掉一部分的記憶體。
比如我要遍曆所有的檔案。可以這樣處理
find / | php php php_read_pipe.php
大家根據具體情況具體分析。

http://www.bkjia.com/PHPjc/321414.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/321414.htmlTechArticle暮夏,您好! rainbird給您發了短訊息: 已經寫了不少後台啟動並執行deamon了.用的挺順手的,但是我現在想擷取管道傳過來的內容,不知道咋實現...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.