首頁  >  文章  >  後端開發  >  spb mobile shell php 讀取shell管道傳輸過來的內容

spb mobile shell php 讀取shell管道傳輸過來的內容

WBOY
WBOY原創
2016-07-29 08:41:581050瀏覽

暮夏,您好!
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_p.

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

以上就介紹了spb mobile shell php 讀取shell管道傳輸過來的內容,包括了spb mobile shell方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn