色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

php 讀取shell管道傳輸過(guò)來(lái)的內(nèi)容

暮夏,您好!
rainbird給您發(fā)了短消息:
已經(jīng)寫了不少后臺(tái)運(yùn)行的deamon了.用的挺順手的,但是我現(xiàn)在想獲取管道傳過(guò)來(lái)的內(nèi)容,不知道咋實(shí)現(xiàn),類似echo "aaaa" |a.php,a.php怎么獲得echo的內(nèi)容,不知道您有什么高見.
今天收到一條消息,解決的方法給大家分享一下:
實(shí)際上,shell 的 | 實(shí)際上表示的是 前一個(gè)的 標(biāo)準(zhǔn)輸出 作為后一個(gè)的標(biāo)準(zhǔn)輸入。雖然實(shí)現(xiàn)是通過(guò)pipe來(lái)實(shí)現(xiàn)的,
但是你寫php代碼的時(shí)候不需要知道底層的運(yùn)作。你直接作為標(biāo)準(zhǔn)輸入讀取就可以了:
下面是一個(gè)實(shí)驗(yàn)代碼:
復(fù)制代碼 代碼如下:
<?php
$fp = fopen("php://stdin", "r");
$s = '';
while (!feof($fp))
{
$s .= fgets($fp, 128);
}
var_dump($s);
fclose($fp);
?>

測(cè)試方法:
復(fù)制代碼 代碼如下:
ls -lh | php php_read_pipe.php

Rainbird 還給出更加簡(jiǎn)單的代碼:
file_get_contents('php://stdin')
如果是有很多數(shù)據(jù)要傳輸過(guò)來(lái),一般來(lái)說(shuō),是每4K傳輸一次。
直到傳輸完成。那可能不能簡(jiǎn)單的使用:
file_get_contents('php://stdin')。這樣的話,一直會(huì)在等待。
分開處理的話,能夠,讀取一定的量后處理一部分。然后釋放掉一部分的內(nèi)存。
比如我要遍歷所有的文件??梢赃@樣處理
find / | php php php_read_pipe.php
大家根據(jù)具體情況具體分析。

php技術(shù)php 讀取shell管道傳輸過(guò)來(lái)的內(nèi)容,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 嘉义县| 双辽市| 静安区| 修文县| 柘城县| 宁安市| 普格县| 黔江区| 温宿县| 南木林县| 凌云县| 鄄城县| 红河县| 马尔康县| 平谷区| 广水市| 武穴市| 和田市| 宁武县| 马尔康县| 西畴县| 叙永县| 正镶白旗| 富顺县| 吉安县| 西平县| 什邡市| 长沙市| 大宁县| 陆良县| 涟水县| 钦州市| 松原市| 平江县| 隆德县| 白城市| 瓦房店市| 东阿县| 洛宁县| 东明县| 新干县|