繁体   English   中英

在没有cron的情况下在后台发送邮件

[英]Send mails in background without cron

我想知道是否有一种方法可以运行PHP循环,以便在后台向订阅者发送几百封电子邮件。 我的目标是格式化新闻稿,单击发送,然后关闭浏览器或更改页面。 当然,发送电子邮件的实际过程将在后台运行,并且不会因浏览器关闭而中断。

我知道可以通过cron作业读取保存在MySQL或文本文件中的队列来实现,但是这样,即使很长一段时间没有队列,cron也会一直在运行,寻找该队列...

我已经在名为Pommo(https://github.com/soonick/poMMo)的脚本中看到了这种功能,但是似乎无法理解它是如何完成的。

有人对此有想法吗?

我知道可以通过cron作业读取保存在MySQL或文本文件中的队列来实现,但是这样,即使很长一段时间没有队列,cron也会一直在运行,寻找该队列...

这几乎超出了Cron的目的。 您应该创建一个每15分钟运行一次的作业,并检查队列中是否需要发送邮件。 如果没有邮件,请让脚本消失,它将在15分钟后再次运行。

如果有要发送的邮件,请在开始发送之前更新行以指示您正在处理它们,因此运行超过15分钟不会导致其他脚本实例发送相同的邮件。

您需要一个队列系统。 有例如适用于linux的Beanstalkd ,您可以使用php来提供内容。

我打算对您的问题添加评论,但他们那里没有足够的空间来格式化和提供示例。

我认为这可能会起作用:

1-将所有要发送的电子邮件加载到数据库或文件。

2-在Web应用程序中,单击按钮发送电子邮件。 这将向服务器提交Ajax请求。 您可以定义在特定时间段内要发送的电子邮件数量。 请记住,大多数主机对每小时可以发送的电子邮件数量有限制。

3-创建一个PHP脚本,它将接收Ajax请求并在您定义的参数内发送所有电子邮件。

4-我相信您可以杀死您的Web浏览器,因为PHP脚本将遍历整个列表,并且在完成发送所有电子邮件之前不会返回。

上面的方法可能有用,但是我永远不会这样。 我将使用如上所述的cronjob。 您的cronjob只需检查是否有要发送的电子邮件即可。 这不是资源密集型的。

如果您决定实施上述想法,请确保您告知我们。 我很好奇这是否行得通。

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM