PHP在活动页面上显示后端脚本的输出

时间:2014-09-29 14:44:14

标签: javascript php ajax backend

我有一个PHP的Web应用程序。该应用程序的一个组件是将数据提交到后端管道(也用PHP编写)。 管道是外部脚本,我的应用程序使用'exec' php函数调用它。管道是一个多步骤管道,它执行多个程序,从之前运行的程序中获取输入。我希望能够在提交给管道的应用程序页面上显示一条消息,并完成管道中的每个步骤,例如

第1步完成......现在进行第2步。 第2步完成......现在进行第3步。

依此类推。

我愿意使用javascript / AJAX来执行此操作,以及与PHP兼容的任何其他语言。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

假设你有一些支持PHP前端和管道的数据库的假设,你不需要特别需要与PHP兼容的东西,而是可以与你的数据库连接的东西。

如果没有关于您设置/尝试过的内容的任何进一步细节等,我只能概述我将在这种情况下使用的工作流程。

  • 提交前端脚本并将请求推送到处理队列中。
  • 用户显示“正在处理,请稍候”类型页面。此页面将前端站点的长轮询AJAX请求或Websocket连接发送到脚本,该脚本轮询数据库以获取有关管道处理的更新。
  • 管道脚本相互链接并将完成的详细信息推送到数据库中,这些详细信息由Websocket / long-polling前端脚本读取,并通过Javascript返回给用户以显示在页面上。

使用数据库作为中间人将是最简单和最灵活的方法。如果你对它们更熟悉,你也可以使用其他语言,只要它们与你在PHP /管道端使用的数据库兼容。

修改

虽然我没有关于你想要做什么的教程的任何链接,但是它背后有一些基础可以用来拼凑你的解决方案:

I would start by getting your pipeline (processing) script to run in the background at interval using cron.或者,您可以使用类似this PHP-Daemon framework的内容来守护该管道,以便它在后台运行。也许有一个cron任务来检查它是否正在运行并在需要时重新启动它。

从那里,您可以在数据库中构建一个表,其中包含有关当前处理任务的状态更新,并构建一个PHP脚本,用于检查给定任务的状态并输出有关它的JSON数据。使用AJAX请求可以轻松读取此JSON数据,其中最简单的可能是jQuery's .ajax() method。这可以在客户端“状态”页面上以间隔调用,在每个“循环”结束时使用setTimeout调用来每X秒轮询一次状态更改。这将是您所追求的最简单的实现,虽然不是最佳表现或最佳方式。

因此,此处的常规工作流程将更改为:

  • 提交前端脚本并将请求推送到状态设置为pending的处理队列。
  • 向用户显示每隔X秒ping status.php?task=12345的处理页面。
  • 后端守护程序/ cron脚本获取请求并开始处理,每隔一段时间将状态更新推送到数据库中。
  • status.php脚本开始在JSON代码中返回不同的状态信息,并显示给用户。