2017-05-28 8 views
0

ループに問題があります。 PHPのメーラーが電子メールを送信するときループでループを作る方法(ダブルループ)

私はこのようなコードを持って、

foreach ($j as $empas) { 


    date_default_timezone_set('Asia/Jakarta'); 
    $nomor = Nomor($i, $total); 
    $proses = proses($total, $i) . "%"; 
    $timeServer = date("G:i:s"); 
    $toDay = date("d-M-Y"); 
    for($p=0;$p<$total;$p++){ 
     $user = $userlist[$p%count($userlist)] ; 


     echo "\e[37m [" . $timeServer . "] - {$nomor}/{$total} - [{$proses}] {$user} > {$empas} \e[0m ";; 
     if (isEmail($empas)) { 
      echo imakochan($empas, $letter, $host, $user, $pw, $port, $sendermail, $sendername, $subjek). "\n"; 
      } else { 
     echo " This is not valid email "; 
    } 

    if ($i == $total) { 
     echo "\n"; 
     echo " [0;34m ================================================================================== \n"; 
     echo " [0;34m [+]   Sending Proccess Completed on " . $timeServer . "   [+]\n"; 
    } 
    $i++; 
} 
} 

ので、私の問題は、私は、SMTPを回転させることができないです。

私はSMTPをしたいが、電子メールで回転し、それがこの

smtpuser1> email1ような電子メール

によって回転する必要があります - >送ら!

smtpuser2> email2 - >送られました!

smtpuser1> email3 - >送信されました。

smtpuser2> email4 - >送られました!

私はこのように行うとき、私は問題を持っている:

[17:01:42] - 1/2 - [50%] smtpuser1 > [email protected] -> Sent! 

[17:01:42] - 1/2 - [50%] smtpuser2 > [email protected] -> Sent! 

    ================================================================================== 
    [+]   Sending Proccess Completed on 17:01:42   [+] 
[17:01:50] - 3/2 - [150%] smtpuser1 > [email protected] -> Sent! 
[17:01:50] - 3/2 - [150%] smtpuser2 > [email protected] -> Sent! 

答えて

0

は、このために二重のループをしないでください。ダブルループ(ループ内のループ)を使用すると、内部のループは外部ループの各実行時に完全に実行されると考えてください。

例:

loop1 : run 5 times 
    loop2: run 2 times 

結果:

loop1 run1 
    loop2 run1 
    loop2 run2 
loop1 run2 
    loop2 run1 
    loop2 run2 
loop1 run3 
    loop2 run1 
    loop2 run2 
loop1 run4 
    loop2 run1 
    loop2 run2 
loop1 run5 
    loop2 run1 
    loop2 run2 

あなたがしようとしている何を達成するために、よりシンプルなアプローチを使用します。例:

date_default_timezone_set('Asia/Jakarta'); 
$smtpArray = array(0 => 'smtp1.example.com', 1 => 'smtp2.example.com', 2 => 'smtp3.example.com'); 
$smtpCount = count($smtpArray); 
$i = 0; 
foreach ($j as $empas) { 
    $nomor = Nomor($i, $total); 
    $proses = proses($total, $i) . "%"; 
    $timeServer = date("G:i:s"); 
    $toDay = date("d-M-Y"); 
    $iteration = $i % $smtpCount; // Create a number of SMTP server to iterate it. 
    $smtp = $smtpArray[$iteration]; // Use the SMTP server selected before. 

    echo "\e[37m [" . $timeServer . "] - {$nomor}/{$total} - [{$proses}] {$smtp} > {$empas} \e[0m "; 
    if (isEmail($empas)) { 
     echo imakochan($empas, $letter, $host, $smtp, $pw, $port, $sendermail, $sendername, $subjek). "\n"; 
    } else { 
     echo " This is not valid email "; 
    } 

    if ($i == $total) { 
     echo "\n"; 
     echo " [0;34m ================================================================================== \n"; 
     echo " [0;34m [+]   Sending Proccess Completed on " . $timeServer . "   [+]\n"; 
    } 
    $i++; // Increase $i to use next SMTP server on next iteration. 
} 

ループの実行ごとに設定する必要がないため、タイムゾーンセットを取得しました。

+0

$ userの機能は何ですか? – UmRchan

+0

私は$ user変数を削除するのを忘れました。私は$ smtp変数に置き換えて、その使い方を説明しています。 –

+0

私のコードでは、私は$ i = 1;を使用しますが、あなたは0のためにそれを使用します。 私は印刷用バナーに使用しているためです。 – UmRchan

関連する問題