PHP读取控制台输出

好吧,这是事情。 我需要读取输出(通常在Linux控制台中看到的输出)。 我最大的问题是我不需要读取线性执行的输出,而是像wget http://ubuntu.com/jaunty.iso并显示它的ETA。

另外,工作stream程如下:

S – web服务器

S的内部networking中的C 1 – computer1

C 2 – S内部网中的计算机2

等等。

用户连接到连接到C x的 S ,然后启动一个wgettop或其他控制台日志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代码,你在做什么?