php process
Compatibility methods
Process 类组件执行 proc_open 中的命令。
我重新编写了这个包并分成两个包。
请使用这些类。而不是使用这个包。
该包旨在用作单个文件而不是复杂的作曲家包。
<?php
$ proc1 = new Process ( ' sh ' );
$ fd_out = $ proc1 -> setInput ( ' echo HelloWorld ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ([ ' grep ' , ' Hello ' ])
-> wait ();
$ ret = stream_get_contents ( $ fd_out );
→ 阅读更多使用示例
composer require takuya/process
进程将返回缓冲 IO 进行读/写
方法将返回流。
<?php
$ proc = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ fd_out = $ proc -> run ();
$ output = stream_get_contents ( $ fd_out );
// you can reuse, re-read output
fseek ( $ fd_out , 0 );
$ str = stream_get_contents ( $ fd_out );
<?php
$ proc = new Process ( ' sh sleep.sh ' );
$ proc -> start ();
echo ' started ' ;
$ proc -> join ();
Process#pipe() 可以 PIPE 程序。
隐式连接管道 stdout -> stdin
<?php
$ proc = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ fd_out = $ proc -> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> wait ();
显式管道连接,连接 (Proc1#)stdout -> (Proc2#)stdin
<?php
$ proc1 = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ proc2 = new Process ([ ' cat ' ]);
[ $ p1_out , $ p1_err ] = $ proc1 -> start ();
$ proc2 -> setInput ( $ p1_out );
$ proc2 -> start ();
$ proc2 -> wait ();
$ proc1 -> wait ();
注意:首先调用$proc2->wait()
,以避免长时间锁定,并行运行两个进程。原因是Process
类在wait
处采用隐式 IOBuffering,因此calling wait()
意味着运行流缓冲循环直到进程结束。
不需要额外的包。
需要使用单个文件src/Process.php
。像这样写 require_once 就可以了。
<?php
require_once ' src/Process.php ' ;
这个Process class
是由vanilla php编写的。没有额外的包裹。没有梨,没有作曲家,不需要安装其他软件包。
在没有composer.phar
或其他包管理器的情况下使用它,您所需要的只是编写require_once。
更多用法,请阅读此 procjet /samples
、 /tests/Features
和./docs
中的文件。