php 读取shell管道传输过来的内容

yipeiwu_com4年前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
大家根据具体情况具体分析。

相关文章

php中截取中文字符串的代码小结

字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到。虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了。 1. 截取G...

php daddslashes()和 saddslashes()有哪些区别分析

//GPC过滤,自动转义$_GET,$_POST,$_COOKIE中的特殊字符,防止SQL注入攻击 $_GET = saddslashes($_GET); $_POST = saddsl...

php blowfish加密解密算法

PHP Blowfish 算法的加密解密,供大家参考,具体内容如下 <?php /** * php blowfish 算法 * Class blowfish...

php实现的css文件背景图片下载器代码

本文实例讲述了php实现的css文件背景图片下载器代码。分享给大家供大家参考。具体实现方法如下: 下载css文件里面的背景图片是我们这些盗版份子长期搞的事情,下载个css图片下载器常出现...

解析将多维数组转换为支持curl提交的一维数组格式

复制代码 代码如下:/**     * @desc    多维数组转化为支持curl提交数组  ...