MYSQL SELECT WITH PAUSE


MYSQL SELECT WITH PAUSE

我们正在制作一个完美的php电子邮件。

从数据库中选择所有用户并向他们发送电子邮件是很好的。

但是,由于我们有大量的电子邮件要发送,我们希望通过[1000]开始和暂停电子邮件的事务,以避免使服务器过载。

的例子:

选择:1000;

暂停MYSQL

SELECT ANOTHER 1000;

暂停MYSQL

等。

我读到了START TRANSACTION, COMMIT &我想我实现的是正确的。

有人能帮我在ROLLBACK事务之前包含100秒的暂停吗?

我不知道该怎么办

我现在得到了什么[带前缀的代码].

max = 1000美元;

发送美元= 0;

$滚= false;

mysql_query("开始事务;");

$query = mysql_query("SELECT DISTINCT mail_id, customers_email_address newsletter WHERE ORDER BY mail_id ASC");

,(结果= mysql_fetch_array美元($查询){

如果($rollback == true){

$rollback = false;

mysql_query("回滚;");

}

[------发送邮件的脚本-----]

发送+ +美元;

if($max == $send){

mysql_query("承诺;");

$rollback = true;

}

}

欢呼Jay

这里根本不需要事务—您没有更新任何东西。实际上,事务的开销在这里是完全没有意义的,所以我建议您去掉它。

您可以简单地(理论上,您可以为此编写代码)

  • 从数据库中选择前1000行:SELECT ... LIMIT 0, 1000
  • 将偏移量增加1000
  • 选择后面的1000行:SELECT ... LIMIT 1000, 1000
  • 冲洗并重复,直到从查询中得到少于1000行。

请注意,为了使该方法工作,您需要以ASC顺序或其他方式order BY主键,以确保您不会两次获得相同的行。

所有你需要的是安排你的发件人脚本与cron,例如发送一些电子邮件。

它将发送超过N个电子邮件每M分钟和服务器将高兴;)

以下几个选项:

1)你可以实现Cronjob

2)有一个php的开源小应用程序PHPList,可以在几秒钟内集成。(我已经使用了这个,所以)

3)第三个选项,你可以使用php的sleep函数。(我不确定)