如何在后台处理请求,然后报告结果?

时间:2017-04-05 02:14:47

标签: php wordpress asynchronous

当用户点击按钮时,我需要执行一项耗时的任务。基本上,我将在每个帖子上进行一些处理,向许多人发送请求到远程服务器。

用户不会立即需要结果,因此我可以在后台运行它。但是当我们再次访问该页面时,我需要能够告诉用户任务是否已经完成(结果是否已完成)。另外,我不希望他们能够启动同一任务的另一个实例(通过单击按钮),而第一个仍然在运行。

我能以任何方式完成上述所有工作吗?

编辑:我正在为WordPress开发。它被标记了,但我想我应该在问题中提到它。

2 个答案:

答案 0 :(得分:0)

您需要JavaScript才能发出Ajax请求。

您至少需要学习JavaScript的基础知识,然后您可以尝试使用其中一个库(例如jQuery),或者如果可以的话,您可以创建一个。

答案 1 :(得分:0)

这是我要经历的基本过程

  1. 创建一个会话(存储在cookie中,持久)
  2. 将请求发送到服务器(通过ajax或表单提交)
  3. 服务器在数据库中创建作业记录,例如 jobs table = session_id | job_id |状态
  4. 页面重新加载并检查属于session_id的所有作业的数据库,并显示它们。
  5. 用户离开后来回来
  6. 页面加载并检查属于session_id的所有作业的数据库,并显示它们。
  7. 其他想法

    • 您可以在作业完成后通过电子邮件发送给用户。
    • 可以通过守护程序或cron作业启动长时间运行的作业。
    • 从命令行运行的PHP脚本,没有超时问题,如网络服务器请求
    • 如果您想进入详细程度,可以在db表中存储作业进度