2010-07-21 20 views
0

我想知道是否可以将应用程序的输出从php运行到客户端。在PHP中执行异步外部应用程序

,比如我有应用程序,输出:

Hello world 

,10秒钟后它输出

10 seconds passed 

我想知道,如果它可以发送“你好”和“字10秒钟“传递给客户,而无需等到整个程序完成其工作。客户将首先收到“Hello world”,并在10秒后输出第二个。

谢谢。

+0

这是因为您的页面可能需要超过10秒才能加载?有点像进度条吗?或者在页面已经加载之后发生第二条消息? – 2010-07-21 06:54:05

回答

0

您的标题说“异步外部应用执行”。由此,你的意思是从PHP脚本执行一个程序,然后在自己的进程中继续执行,而不是挂起PHP页面加载。您可能希望passthru()专门设置命令以输出到本地文件而不是脚本(个人未经测试,尽管PHP手册说可以),或pcntl_fork()将脚本拆分为单独的进程,该进程将处理程序执行旁边。但是,除非您在客户端安装了一个会自动接受您的第二个新的tcp强制连接的木马,否则在它已经与服务器断开连接之后重新发送到浏览器并期望它显示您的未经请求的消息是不可能的。

但是,如果您想为您的页面加载进度消息,只需在一些forwhile循环的任意位置回显“仍在加载...”。另一方面,文件下载进度条不能在PHP中处理。在下载过程中回应“仍在加载...”会损坏文件。目前,我不知道任何使用任何PHP,Javascript或VB方法执行此操作的工具,除非在客户端通过安装您创作的插件允许的情况下,在浏览器自己的API中(如果有文档)。但是,为什么浏览器已经内置进度条?

0

我认为你应该用javascript来做到这一点。在服务器上使用cpu-cycles是完全没有必要的,直到你的所有需求都是显示时间过去为止。

-1

我不明白你的应用程序,但批量处理这一浮现在脑海:

PHP HELLO-world.php | php client.php

要调整它,请使用Hadoop。