PHP Sleep正在打破Foreach

时间:2014-06-17 11:35:59

标签: php arrays foreach sleep

我有以下代码:

<?php
$participants_db = "test_test_test_test_test_test_Sticky_Sticky_Sticky_Sticky_";
$participants = array_unique(explode("_", $participants_db));
 foreach($participants as $user)
        {
            echo $user . '\n';
            sleep(10);
        }
?>

我花了几个小时调试这个脚本,它实际上获得了每个用户名并向每个用户发送电子邮件, 事情是它是为每个用户发送电子邮件,但$ user没有改变...我想知道为什么睡眠打破Foreach和如何来解决这个问题.. http://3v4l.org/b048m

更新 这是完整的代码:

foreach($participants as $user)
        {
            if($user == '')
            {
                //echo 'broken';
                break 1;
            }
            //get each user's email address
            $sql3 = $dbh->prepare("SELECT * FROM users WHERE username = ?");
            $sql3->execute(array($user));
            while($a = $sql3->fetch())
            {
                $email = $a['email'];
                $username = $a['username'];
            }
            $message = str_replace("{USERNAME}", $username.'_'.$user, $message);
            sendemail($email, $cc, $from, $subject, $message, $filename, $filepath);
            //sleep(10);
}

数组(参与者)包含用户名,每个用户都有不同的电子邮件地址。 这个脚本由一个cron作业执行。执行后它发送电子邮件到2封电子邮件(例如),并且它说 Test_test 对两个电子邮件有不同的用户名 我只是想知道,它是如何得到电子邮件和用户名仍然相同???

1 个答案:

答案 0 :(得分:0)

问题是str_replace 它用用户名替换{USERNAME},然后在执行后,$ message不包含{USERNAME}导致其主要问题...