请选择 进入手机版 | 继续访问电脑版
绿茶科技社区
已经写了不少后台运行的deamon了.用的挺顺手的,但是我现在想获取管道传过来的内容,不知道咋实现,类似echo "aaaa" |a.php,a.php怎么获得echo的内容,不知道您有什么高见.
暮夏,您好!
rainbird给您发了短消息:
已经写了不少后台运行的deamon了.用的挺顺手的,但是我现在想获取管道传过来的内容,不知道咋实现,类似echo "aaaa" |a.php,a.php怎么获得echo的内容,不知道您有什么高见.
今天收到一条消息,解决的方法给大家分享一下:
实际上,shell 的 | 实际上表示的是 前一个的 标准输出 作为后一个的标准输入。虽然实现是通过pipe来实现的,
但是你写php代码的时候不需要知道底层的运作。你直接作为标准输入读取就可以了:
下面是一个实验代码:
  1. <?php
  2. $fp = fopen("php://stdin", "r");
  3. $s = '';
  4. while (!feof($fp))
  5. {
  6. $s .= fgets($fp, 128);
  7. }
  8. var_dump($s);
  9. fclose($fp);
  10. ?>
复制代码
测试方法:
  1. 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
大家根据具体情况具体分析。



分享到 :
0 人收藏

3 个回复

倒序浏览
墨童鞋  高级会员 | 2019-9-10 03:46:09
鄙视楼下的顶帖没我快,哈哈
Dragon龙  高级会员 | 2019-9-24 03:59:57
呵呵,低调,低调!
SammyLiu  高级会员 | 2019-10-10 02:54:53
顶起顶起顶起
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

举报|Archiver|手机版|小黑屋|Lvchakeji Inc.  

Powered by Discuz! X3.3 © 2001-2016 Comsenz Inc.

返回顶部