当前位置: 首页 > 面试题库 >

发送HTTP响应后继续执行PHP

章远航
2023-03-14
问题内容

如何使PHP 5.2(以apache mod_php运行)向客户端发送完整的HTTP响应,然后再继续执行操作一分钟?

长话说:

我有一个PHP脚本,该脚本必须执行一些较长的数据库请求并发送电子邮件,这需要45到60秒才能运行。这个脚本由我无法控制的应用程序调用。我需要该应用程序报告从PHP脚本收到的任何错误消息(主要是无效的参数错误)。

该应用程序的超时延迟小于45秒(我不知道确切的值),因此将PHP脚本的每次执行都注册为错误。因此,我需要PHP尽快将完整的HTTP响应发送到客户端(最好是在验证输入参数后立即发送到客户端),然后运行数据库和电子邮件处理。

我正在运行mod_php,所以pcntl_fork不可用。我可以通过将要处理的数据保存到数据库并从中运行实际过程来解决此问题cron,但是我正在寻找一个更短的解决方案。


问题答案:

让处理初始请求的脚本在处理队列中创建一个条目,然后立即返回。然后,创建一个单独的进程(也许通过cron),该进程定期运行队列中待处理的任何作业。



 类似资料:
  • 有什么想法吗?没有JS库。 编辑:我做了几次回拨尝试。老实说,我很难理解他们。下面是我的最后一次尝试:

  • 问题内容: 我正在尝试引发异常(不使用try catch块),并且程序在引发异常后立即完成。有没有一种方法可以在我引发异常之后继续执行程序?我抛出了在另一个类中定义的InvalidEmployeeTypeException,但是我希望程序在抛出该异常后继续执行。 问题答案: 试试这个:

  • 客户端通过HTTP请求(通过浏览器post)调用Servlet,然后Servlet应向外部网站发送请求(get),并从网站接收响应(post)。servlet继续响应并向客户端发送响应(post)。 我的问题是如何在Servlet中发送和接收请求/响应并将某些内容发送回客户端?

  • 在一些请求中,我们会做一些日志的推送、用户数据的统计等和返回给终端数据无关的操作。而这些操作,即使你用异步非阻塞的方式,在终端看来,也是会影响速度的。这个和我们的原则:终端请求,需要用最快的速度返回给终端,是冲突的。 这时候,最理想的是,获取完给终端返回的数据后,就断开连接,后面的日志和统计等动作,在断开连接后,后台继续完成即可。 怎么做到呢?我们先看其中的一种方法: local response

  • 我正在尝试使用Netty编写RTSP服务器。 现在,客户端发送请求 我想发回以下回复 我应该使用什么来构造http响应。我应该使用HttpResponse还是只使用普通字节数组并将其转换为ByteBuf? 我使用的Netty版本是4.1.5 提前谢谢。

  • 我制作了一个程序,要求用户输入5位数字,然后程序将查找这些数字的总和。我想知道我怎样才能使程序在计算一次之后一遍又一遍地要求一个数字。我希望用户再试一次,直到他自己想退出。