0

我的脚本有问题

如果有人可以帮助我,请与循环有关的问题

问题:

  1. 我正在完美地开始循环,只有第一个循环没有任何问题。
  2. 当结果 = 0 下一个循环开始时,它只在第一个帐户中给我 -1 -2 -3 等。

正确的方法:当下一个循环开始时,在 smtp $server_index++ 中添加 +2;并从第一个帐户开始,不粘在第一个帐户中,并在同一帐户中获得 minues 数字。

    $server_index = 0;

    while($customer = mysql_fetch_assoc($result)){



    //// Start Server Switch

    $available_server_limit = $servers[$server_index]["per_day_limit"] - getEmailUsage($servers[$server_index]["id"],date("d/m/Y",time()));

    if($available_server_limit==0){

      if($server_index==$servers_count-1){

        //exit(showError("Sorry! We don't have limit to send more emails"));

        mysql_query("UPDATE `smtp_servers` SET `per_day_limit`=`per_day_limit`+2");

        $server_index=0;


      }else{

        $server_index++;

      }

    }
4

1 回答 1

1

仅从这么多信息中很难准确地看到您想要什么。但是,我应该指出,您只会访问 $server_index++;如果 $available_server_limit==0

如果 $available_server_limit 不等于 0,你会卡住。

循环——顺便说一句——在一个依赖于你没有使用的变量的while语句中。我可以建议一个 foreach 或 for 声明吗?

另一方面,请尽可能取消 mysql_* 。与 PHP 的最新版本相比,它已贬值。

看到这个了解更多信息

我还注意到您没有显示孔循环。因此,考虑到这一点,这是我对您的最佳解决方法的猜测。

$server_index = 0;
foreach( $servers as $key=>$val )
{
    $available_server_limit = $servers[$server_index]["per_day_limit"] - getEmailUsage($servers[$server_index]["id"],date("d/m/Y",time()));
    if($available_server_limit==0)
    {
        if($server_index==$servers_count-1)
        {
            mysql_query("UPDATE `smtp_servers` SET `per_day_limit`=`per_day_limit`+2");
            $server_index=0;
        }
    }
    $server_index++;

注意:我没有关闭 foreach 循环,因为您的 while 循环没有关闭。我想你已经得到了你正在使用的代码。

于 2013-08-02T03:17:50.927 回答