好吧,这是事情。 我需要读取输出(通常在Linux控制台中看到的输出)。 我最大的问题是我不需要读取线性执行的输出,而是像wget http://ubuntu.com/jaunty.iso
并显示它的ETA。
另外,工作stream程如下:
S
– web服务器
S的内部networking中的C
1 – computer1
C
2 – S内部网中的计算机2
等等。
用户连接到连接到C
x的 S
,然后启动一个wget
, top
或其他控制台日志logging命令(根据用户的要求)。 当wget
下载指定的目标时,用户可以从C
x中看到“控制台日志”。
这是否合理? 可以在不使用服务器/客户端软件的情况下完成吗?
谢谢!
你需要使用php函数proc_open – 你可以指定一个管道数组(stdin,如果你在控制台上,stdout和stderr通常会被打印到键盘上到显示器)。 然后你可以控制给定程序的输入/输出
举个例子:
$pipes = array(); $pipe_descriptions = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to ); $cmd = "wget $url"; $proc_handle = proc_open($cmd, $pipe_descriptions, $pipes); if(is_resource($proc_handle)) { // Your process is running. You may now read it's output with fread($pipes[1]) and fread($pipes[2]) // Send input to your program with fwrite($pipes[0]) // remember to fclose() all pipes and fclose() the process when you're done!
你有一些现有的PHP代码,你在做什么?