Symfonyob娱乐下载 3.1新增功能:进程的输入和输出流
2016年4月7日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
提供的
尼古拉斯Grekas
在# 18386而且# 18414.
输出流
在Syob娱乐下载mfony 3.1中,过程
类实现PHP的IteratorAggregate接口返回一个迭代器,指向正在运行的进程的输出。返回值的键是输出的类型(过程::
或过程::犯错
),值为该过程产生的输出。
这个新特性允许像使用foreach ()
构造:
12 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载\组件\过程\过程;$过程=新过程(ls lsa的);$过程->开始();foreach($过程作为$类型= >$数据){如果($过程::出= = =$类型){回声$数据.“\ n”;}其他的{回声“呃”.$数据.“\ n”;}}
输入流
类似地,流程组件在Symfony 3.1中ob娱乐下载增加了一个新的InputStream
类,以允许在流程运行时将数据传递给流程的标准输入。传统上你们使用setInput ()
方法提供该信息:
1 2 3 4 5
使用ob娱乐下载\组件\过程\过程;$过程=新过程(“猫”);$过程->setInput (“file.txt”);$过程->run ();
在本例中,在将数据完全写入子流程的标准输入后,相关的管道将关闭,您不能提供更多的输入。新InputStream
克服了这一限制:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用ob娱乐下载\组件\过程\InputStream;$输入=新InputStream ();$输入->写(“foo”);$过程=新过程(“my_script”);$过程->setInput ($输入);$过程->开始();/ /……读取流程输出或做其他事情$输入->写(“酒吧”);/ /……读取流程输出或做其他事情$输入->写(“qux”);$输入->close ();/ /……
您可以在流程执行期间根据需要提供任意数量的输入。的write ()
方法接受标量、流资源或可遍历对象作为参数。写入标准输入后,只需调用close ()
方法。
发表在#生活在边缘
评论
菲利普Villiers
2016年4月7日在接下来
# 1
这有一个用例吗?
弗雷德里克舒伯特
2016年4月10日说在12:35
#2
@Philippe Villiers可能是一个像sftp这样的ftp客户端,你需要在程序运行时与它交互时输入命令。
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。