【问题标题】:PHP Displaying output of backend script on active pagePHP 在活动页面上显示后端脚本的输出
【发布时间】:2014-11-24 00:05:10
【问题描述】:

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

第 1 步已完成...现在正在执行第 2 步。 第 2 步已完成...现在正在执行第 3 步。

等等等等。

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

非常感谢任何帮助。

【问题讨论】:

  • 在你的“脚步”之间产生共鸣?
  • 请与我们分享您的尝试。

标签: javascript php ajax backend


【解决方案1】:

假设您有某种数据库支持您的 PHP 前端和管道,那么您并不特别需要与 PHP 兼容的东西,而是可以与您的数据库接口的东西。

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

  • 提交前端脚本并将请求推送到处理队列中。
  • 向用户显示“处理中,请稍候”类型的页面。此页面向前端站点发出长轮询 AJAX 请求或 Websocket 连接到脚本,该脚本轮询数据库以获取管道处理的更新。
  • 管道脚本相互链接并将其完成的详细信息推送到数据库中,这些详细信息由 Websocket/长轮询前端脚本读取并通过 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。这可以在客户端“状态”页面上每隔 X 秒使用setTimeout 调用在每个“循环”结束时调用以轮询状态更改。这将是您所追求的最简单的实现方式,尽管不是最佳性能或最佳方式。

所以这里的一般工作流程会变成这样:

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

【讨论】:

  • 嗨,布赖恩,感谢您提供此信息。这听起来很有趣。您能指导我查看您提出的第三个要点的任何教程吗?
  • @chuckg1979 我用一些参考资料更新了我的答案,但是你的用例对我来说有点太具体了,所以我无法完成所有教程,尽管有一些很好的资源可以用来拼凑一起实现你自己的实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 2013-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多