使用 CodeIgniter 和 PHP,有没有办法向客户端发出重定向并继续执行当前脚本


Using CodeIgniter and PHP, is there a way to issue a redirect to the client and continue executing the present script?

>我有一个处理表单输入的页面。它做一些事情,发送几封电子邮件,并将客户端重定向到另一个页面。事情进展顺利。

问题是发送电子邮件很慢,如果我必须发送几封电子邮件,响应时间是不可接受的。我想将客户端重定向到结果页面,然后发送电子邮件。遗憾的是,CodeIgniter 中的redirect()调用会结束执行。

有没有办法执行 302 重定向并允许脚本继续执行?

清除

302 重定向标头非常重要。关闭连接是可以的,但不是必需的。重要的是,在发送电子邮件之前将用户重定向,以便不必等待电子邮件发送完成。

我认为使用消息队列比让可能的僵尸进程坐在那里更合适。基本上,当执行此操作时,将作业转储到作业队列中,其中包含电子邮件的正文,要发送给谁,主题等。然后设置一个 cron 作业,每两分钟读取一次此队列,然后发送电子邮件。

您还可以考虑使用Amazon(http://aws.amazon.com/sqs/faqs/#What_can_I_do_with_Amazon_SQS)的简单队列服务以及简单电子邮件服务来创建可扩展的解决方案。