Php 我的脚本会减慢其他脚本的速度

Php 我的脚本会减慢其他脚本的速度,php,sleep,Php,Sleep,我使用一个简单的脚本来检查MySQL表中以前的邀请并发送新的邀请。但此脚本会使服务器繁忙,并降低其他脚本的运行速度。我应该如何改变它 for ($g=0; $g<500; $g++){ $lastsent = time() - (86400*30*6); // last 6 months $chkinvlast = mysql_query("SELECT * FROM table WHERE (inv_email='$useremail[$g]' AND inv_d

我使用一个简单的脚本来检查MySQL表中以前的邀请并发送新的邀请。但此脚本会使服务器繁忙,并降低其他脚本的运行速度。我应该如何改变它

for ($g=0; $g<500; $g++){
      $lastsent = time() - (86400*30*6); // last 6 months
      $chkinvlast = mysql_query("SELECT * FROM table WHERE (inv_email='$useremail[$g]' AND inv_datesent>'$lastsent')");
      if (@mysql_num_rows($chkinvlast) < 1){
        send_email($useremail[$g],$ltitle,$lbody);
       }else{
        echo "<br>Invitation for $user was NOT sent, because you already sent an invitation in last 6 months";
       }
}

for($g=0;$g不要给服务器打500个电话..这就是全部也是唯一可能的答案。当然,它会变慢

解决方案是以这种方式更改查询,使其使用WHERE in函数

寻找如何在您的情况下采用它。在这种情况下,您只需执行一次查询,而不是500次。查看它的速度;-)

删除for循环

$usermails = "(".implode(',',$usermail).")";

mysql_query("SELECT * FROM table WHERE (inv_email IN ($usermails)  AND inv_datesent>'$lastsent')");
或准备好的声明:

$usermails = "(".implode(',',$usermail).")";
$in  = str_repeat('?,', count($usermails) - 1) . '?';
$sql = "SELECT * FROM table WHERE inv_email  IN ($in)";
$stm = $db->prepare($sql);
$stm->execute($usermails);
$row= $stm->fetchAll();

“阻止”是什么意思?我的意思是“阻止运行”这些行不太可能阻止另一个脚本。到星期五,你只需用你的键盘来进行编码head@Dagon:即使在这之后,结果也没有其他问题那么糟糕