程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php 讀取shell管道傳輸過來的內容

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

編輯:PHP綜合
暮夏,您好!
rainbird給您發了短消息:
已經寫了不少後台運行的deamon了.用的挺順手的,但是我現在想獲取管道傳過來的內容,不知道咋實現,類似echo "aaaa" |a.php,a.php怎麼獲得echo的內容,不知道您有什麼高見.
今天收到一條消息,解決的方法給大家分享一下:
實際上,shell 的 | 實際上表示的是 前一個的 標准輸出 作為後一個的標准輸入。雖然實現是通過pipe來實現的,
但是你寫php代碼的時候不需要知道底層的運作。你直接作為標准輸入讀取就可以了:
下面是一個實驗代碼:
復制代碼 代碼如下:
<?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
大家根據具體情況具體分析。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved