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

我想知道是否有办法运行一个PHP循环,以发送数百封电子邮件给后台的用户。 我的目标是格式化通讯,点击发送,然后closures浏览器或更改页面。 当然,发送电子邮件的实际过程将在后台运行,不会被浏览器closures中断。

我知道这可以通过从MySQL或文本文件中保存的队列中读取一个cron作业来完成,但是这样,即使长时间没有队列,cron也会一直运行,寻找队列。

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

有没有人有这个想法?

我要为你的问题添加一个评论,但是他们没有足够的空间来格式化和给出例子。

这是一个我认为可能会起作用的想法:

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

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

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

4 – 我相信你可以杀死你的网页浏览器,因为PHP脚本会在整个列表中运行,直到完成发送所有邮件才会返回。

以上可能工作,但我永远不会这样做。 我将使用上面所述的cronjob。 你的cronjob只需要检查是否有电子邮件发送与否。 这不是资源密集型的。

如果您决定实施上述想法,请确保您通知我们。 我很好奇,如果这将工作。

祝你好运!

我知道这可以通过从MySQL或文本文件中保存的队列中读取一个cron作业来完成,但是这样,即使长时间没有队列,cron也会一直运行,寻找队列。

这几乎是克朗的目的。 您应该创建一个每15分钟运行一次的作业,并检查队列中是否需要发送邮件。 如果没有邮件,让脚本死亡,它会在15分钟内再次运行。

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

你需要一个队列系统。 有例如用于Linux的Beanstalkd ,你可以用PHP来提供东西。