gpt4 book ai didi

php - 如何使长时间运行的 PHP 脚本立即显示成功消息?

转载 作者:可可西里 更新时间:2023-10-31 23:29:39 25 4
gpt4 key购买 nike

目标

我正在尝试创建一个 PHP 脚本,该脚本将一个相当大的 (6MB) PDF 文件通过电子邮件发送给网站上请求它的用户。用户在表单中输入他们的电子邮件地址,提交表单,然后文件通过 PHP Mailer 实例发送给他们。用户在提交表单时会显示一个成功页面。

问题

在通过 POST 方法提交数据后,有一个长时间的停顿,服务器最终返回 404。但是,几分钟后收到的电子邮件与 PDF 附件完美无缺。

故障排除/尝试的解决方案

我将此问题归因于 PHP Mailer,因为附件太大,发送电子邮件的时间太长了。服务器超时并求助于返回 404。与此同时,脚本最终完成处理并随后收到电子邮件。

如果我删除附件并只发送一封空白电子邮件,脚本会很快加载并显示成功/确认页面。

我考虑过创建一个重定向,但是我在任何地方都找到了关于如何在 PHP 中实现重定向的解释,据说你应该终止原始脚本(我不想这样做)。

问题

如何让电子邮件脚本慢慢运行,同时立即向用户显示一条成功消息,以免他们感到困惑?

最佳答案

这是消息队列的任务。将发送邮件所需的所有信息存储在队列中,并让后台任务获取此信息并发送邮件。如果插入消息队列成功,则向用户显示成功消息。

如果您无法访问后台脚本(例如共享主机),您仍然可以直接回复。只需使用 ignore_user_abort(true) 并发送正确的 Content-Length header 。浏览器将信任该 header 并显示响应,而您的脚本可以继续运行并发送邮件。

关于php - 如何使长时间运行的 PHP 脚本立即显示成功消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32159414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com