2012-05-09 92 views
0

我试图通过使用popen执行命令,然后通过AJAX打印出其进度。我发现这post非常有用,并得到了AJAX脚本交流工作正常。问题是每当有一个来自ajax的异步GET到test时,重复popen上的句柄。如果我的shell只运行一次,那么句柄不再有效。我无法弄清楚如何使$ handle在请求中持久化。popen处理持续连接

public function test() 
{ 
     chdir('my dir'); 
     $handle = popen('make install 2>&1','r'); 
     echo fread($handle, 2096); 


} 

一次只会有一个用户请求....只能用于Admin的后端。 AJAX的输出始终是“在src中进行安装”。

+0

这不是真正的'popen'句柄,你需要保持开放,这是你需要继续运行的PHP脚本本身。你是以这种方式做这件事吗? – deceze

回答

2

你不能那样做。您将不得不在后台运行“make install”进程(例如通过exec()),并将其输出重定向到执行AJAX请求时可以读取的文件/管道。