【发布时间】:2014-04-12 15:05:47
【问题描述】:
我正在制作一个 php 邮件程序,它从 javascript 应用程序 xmlhttp 请求中获取 POST 数据。
它适用于大约 50 个联系人,但我只是在 150 个测试电子邮件地址上对其进行了测试,并且在脚本中途达到了最大执行时间(因为我在发送每封邮件后都设置了延迟),然后它自动重新启动脚本相同的数据并从第一个联系人开始发送邮件。
我担心它会无限循环,但在第二次运行达到最大执行时间后它停止了。我在第二次运行期间关闭了 javascript 应用程序,所以可能与它停止有关。
我将要么增加最大执行时间,要么改为解析 php 数据块,但我需要确保这种情况永远不会再次发生,因为在现实世界的运行中,我永远无法将两封电子邮件发送到同一个人。
是否还有其他情况下 php 脚本可能会运行两次,并且是否有可靠的方法来确保它永远不会发生?
【问题讨论】:
-
这是一个比看起来复杂得多的问题。您需要跟踪它上次运行的时间,和/或它最后一次向某人发送电子邮件的时间,并且当您执行时,请检查以确保它在过去 X 小时内没有运行,或者没有t 之前发送给那个人(或在过去 X 小时内没有发送给他们)。
-
你考虑过使用 Swiftmailer 吗?发送这么多邮件应该没有问题。
-
是否还有其他可能导致 php 脚本运行两次的情况;是的,如果你运行它两次。您需要检查脚本运行两次的原因。
-
@cale_b,啊,我明白了,好主意。我已经建立了一个日志系统,所以我可以使用它。
-
@SalmanA,我能想到脚本运行两次的唯一原因可能是因为兑现了 POST 数据?我不确定它是如何工作的,也许当脚本由于最大执行时间而失败时,服务器使用兑现的 POST 数据再次运行它。它是共享主机,所以我不确定。
标签: javascript php