3

我需要在事件(表单提交)后 10 分钟延迟 PHP 中某些代码的执行(例如;发送电子邮件)。

实现这一目标的最佳方法是什么?

我唯一的选择是每分钟运行一次 Cronjob 吗?这在共享主机上实用吗?

4

1 回答 1

9

使用 cronjobs 是最好的方法。

如果您不能在共享主机上使用 cronjob(询问客户支持),您可以在连接到 Internet 的机器(即您的家用计算机)上运行 cronjob,该机器运行 wget 到您服务器上的 php 页面,进行身份验证就可以了,然后运行 ​​php 代码来发送您的电子邮件。

对于 PHP 代码部分,我将使用一个包含所有要发送的电子邮件的数据库表、一个 creation_date 字段和一个状态字段。

作业调用的 PHP 代码将简单地执行(在伪代码中):

$batchRecords = takeAbunchOfRecordsWhereStatus(NOT_SENT);
while($batchRecords) {
    if($creationDate + 10 minutes >= now()) {
        sendEmail();
        markRecordAsSent();
    }
}
于 2012-09-15T05:45:51.637 回答