Php 在网页后台运行的Perl脚本

Php 在网页后台运行的Perl脚本,php,perl,background,Php,Perl,Background,我有一个网页,它使用PHPExec来运行一个perl脚本,并将其写入文件。问题是,perl脚本需要很长时间才能执行,我希望在它最终返回之前在网页上显示结果。我现在让exec在一个div中显示它写入的文件的内容,该div每3秒重新加载一次 我似乎不知道如何在perl脚本完成之前让页面开始加载。有人对如何实现这一点有想法吗?如果您没有所有内容,如何关闭页面的正文标签并发送 您需要将其重新构建为异步输出加载,其中页面提供javascript,调用返回部分结果的服务器url,将其附加到DOM,并继续调用

我有一个网页,它使用PHPExec来运行一个perl脚本,并将其写入文件。问题是,perl脚本需要很长时间才能执行,我希望在它最终返回之前在网页上显示结果。我现在让exec在一个div中显示它写入的文件的内容,该div每3秒重新加载一次


我似乎不知道如何在perl脚本完成之前让页面开始加载。有人对如何实现这一点有想法吗?

如果您没有所有内容,如何关闭页面的正文标签并发送


您需要将其重新构建为异步输出加载,其中页面提供javascript,调用返回部分结果的服务器url,将其附加到DOM,并继续调用服务器url以获得更多部分结果。

请参阅Randal关于此主题的权威文章:。您需要修改他用来查看traceroute输出的Perl CGI脚本,并使用PHP执行类似的操作。其基本思想是:

浏览器点击表单,用户填写该表单;浏览器提交表单,在验证正确信息后,响应分叉以运行任务,并使用会话密钥将浏览器重定向回;分叉进程运行任务,在任务到达时获取输出并更新缓存值,完成时进行标记;CGI脚本从缓存中提取并显示它,只要数据不完整,就发送刷新


从iframe中的不同php文件运行perlscript。这样,它将执行脚本,但您无需等待脚本成功。如果perlscript在文件准备就绪之前打印到文件中,您甚至可以在主页中读取这些行并显示第一个结果。

在开始发送之前,您无需关闭页面的正文标记。在发送数据之前缓冲数据只意味着可以包含一个内容长度头并允许部分请求。HTML内容与具有头的传输机制HTTP无关。一旦服务器发送了内容,它就不能返回并告诉客户端“welp我发送了错误的内容,在这里,放弃我以前发送的内容,改用它。”实际上,你可以使用内容,但你不需要这样做,因为你可以说这里是文档的一部分,这里还有一些,还有一些,还有一些。浏览器在开始呈现文档之前不会等待从服务器接收到body-end标记。IE现在支持吗?虽然我知道有些浏览器会进行部分渲染,但我不知道这是跨平台兼容性所依赖的,而且这会导致有趣的问题,这取决于部分内容的复杂性。@Quentin除非这是一个自动脚本,你的突袭是完全没有必要的。在单击“发布你的答案”之前写一个真实的答案,而不是只写链接答案、发布然后编辑它,怎么样?谢谢你的想法!我实际上创建了另一个perl脚本,它在后台运行另一个并返回!