我制作了一个非常简单的脚本来遍历我们所有的用户,每次执行的限制为 500。
它执行以下操作:
- 选择用户数据
- 插入一行
- 向用户发送电子邮件
- 更新一行
- 下一个用户
它按预期工作并成功完成。
但是,当我运行它时,我无法在另一个窗口中使用该网站,因为它只是“加载”,直到该脚本完成执行?
就好像脚本在运行时锁定了用户表,但这不应该发生,因为我们只是使用保存到的数据$result
?
但是我可以在网站冻结时通过sqlyog查询数据库,所以不能这样吗?会不会只是使用了太多资源?
脚本- 示例
<?
set_time_limit(0);
require '../connect.php';
require '../includes/ses.php';
$i = 1;
$ses = new simpleemailservice();
$result = mysql_query("SELECT id, username, email FROM `user` WHERE thiscol = 0 LIMIT 500");
while($row = mysql_fetch_row($result)){
mysql_query("INSERT INTO table (data) VALUES (1)");
$m = new SimpleEmailServiceMessage();
$m->addTo($row[1]." <".$row[2].">");
$m->setFrom("Emailer <no-reply@emailer.com>");
$m->setSubject("Subject");
$m->setMessageFromString("Email Text", "Email HTML");
if($ses->sendEmail($m))
mysql_query("UPDATE `user` SET thiscol = 1 WHERE id = ".$row[0]);
$i++;
}
?>