用PHP实时输出运行进程

77

我正在尝试在网页上运行一个进程,并实时返回其输出。例如,如果我运行'ping'进程,它应该每次返回一个新的行时更新我的页面(目前,当我使用exec(command, output)时,我被迫使用-c选项并等待进程完成才能在我的网页上看到输出)。这在php中是否可能实现?

我还想知道当有人离开页面时,正确的杀死此类进程的方法是什么。对于'ping'进程,我仍然能够在系统监视器中看到进程正在运行(这是有意义的)。


1
Nginx X-Accel缓冲可能会阻止接受的答案起作用,为了使其工作,在此之前添加以下标题:header('X-Accel-Buffering: no'); - Nylls
对我来说,Nginx缓冲是问题所在,上面的评论解决了我的问题。 - Aryaman Gupta
12个回答

1

尝试更改php.ini文件设置"output_buffering = Off"。您应该能够在页面上获得实时输出 使用系统命令而不是exec..系统命令将刷新输出


0
为什么不将输出导入日志文件,然后使用该文件将内容返回给客户端呢?虽然不是实时的,但也许已经足够了?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接