Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何确保php脚本不会运行两次_Javascript_Php - Fatal编程技术网

Javascript 如何确保php脚本不会运行两次

Javascript 如何确保php脚本不会运行两次,javascript,php,Javascript,Php,我正在制作一个php邮件程序,它从javascript应用程序xmlhttp请求获取POST数据 它可以与大约50个联系人一起工作,但我只是在150个测试电子邮件地址上测试了它,并且在脚本执行的中途达到了最大执行时间(因为我在发送每封邮件后都会延迟),然后它使用相同的数据自动重新启动脚本,并从第一个联系人开始发送邮件 我担心它会不确定地循环,但在第二次运行中达到最大执行时间后,它停止了。我在第二次运行时关闭了javascript应用程序,所以这可能与它停止有关 我要增加最大执行时间,或者改为解析

我正在制作一个php邮件程序,它从javascript应用程序xmlhttp请求获取POST数据

它可以与大约50个联系人一起工作,但我只是在150个测试电子邮件地址上测试了它,并且在脚本执行的中途达到了最大执行时间(因为我在发送每封邮件后都会延迟),然后它使用相同的数据自动重新启动脚本,并从第一个联系人开始发送邮件

我担心它会不确定地循环,但在第二次运行中达到最大执行时间后,它停止了。我在第二次运行时关闭了javascript应用程序,所以这可能与它停止有关

我要增加最大执行时间,或者改为解析php数据块,但我需要确保这种情况不会再次发生,因为在现实运行中,我永远不会有两封电子邮件发送给同一个人


是否有其他情况下,php脚本可能会运行两次,并且是否有可靠的方法确保它永远不会发生?

如果您从文件中读取邮件,则需要将其从文件中删除,或者使用已发送邮件制作列表,并与源列表进行比较。
此外,最好使用id、target、sent(true/false)、datetime等列的数据库,并在邮件成功发送后对其进行更新。我假设您的电子邮件地址位于某种数据库中,因此答案相当简单

向表中添加另一个常见的DATETIME,并在每次脚本向该联系人发送电子邮件时更新它

在您发送电子邮件之前,获取该戳记并将其与之前和当前消息的人类值DATETIME进行比较。如果最后一条消息是在最近一条消息发出之后发送的,则不要发送它


如果我错误地认为没有数据库。。。。我强烈建议你建立一个数据库

这是一个远比看上去复杂的问题。您需要跟踪上次运行的时间,和/或上一次发送电子邮件给一个人,并且当您正在执行时,检查以确保它在过去的X小时没有运行,或者没有发送到该人之前(或者在过去的X小时没有发送给他们)。您考虑使用SWIFTMALLER吗?发送那么多电子邮件应该没有问题;是的,如果你运行两次。你需要检查脚本为什么运行了两次。@cale_b,啊,我明白了,好主意。我已经建立了一个日志系统,这样我就可以使用它了。@SalmanA,我能想到为什么脚本运行两次的唯一原因可能是因为兑现了POST数据?我不确定它到底是如何工作的,也许当脚本由于执行时间最长而失败时,服务器会使用已兑现的POST数据再次运行它。它是共享主机,所以我不确定。