我创建了一个名为Email-Queue的数据库表。我将插入所有PHP应用程序需要发送的电子邮件到这个表中。
另一个PHP脚本将查找所有未发送的电子邮件并将它们发送。
我使用cronjobs运行此脚本。不幸的是,cronjobs最多只能每分钟运行一次。所以在最坏的情况下,用户必须等待一分钟才能真正发送他的电子邮件。
我目前的解决方法是使用一个额外的睡眠参数来调用脚本,并复制cronjobs。
例子:
* * * * * curl emails.php?sleep=0 >/dev/null 2>&1
* * * * * curl emails.php?sleep=10 >/dev/null 2>&1
* * * * * curl emails.php?sleep=20 >/dev/null 2>&1
* * * * * curl emails.php?sleep=30 >/dev/null 2>&1
* * * * * curl emails.php?sleep=40 >/dev/null 2>&1
* * * * * curl emails.php?sleep=50 >/dev/null 2>&1
在上面的示例中,该脚本将每10秒运行一次。emails.php脚本的第一行将是:
sleep($_REQUEST['sleep']);
https://crontab.guru/
,这是一个非常好的用于各种cron配置的网站。 - Mark