Настройка количества времени, которое проходит при отправке писем в цикле - PullRequest
1 голос
/ 25 апреля 2010

Простите за этот вопрос noob, но есть ли такая настройка, которая устанавливает определенный промежуток времени (например, милли / секунды), который должен проходить между отправкой писем через скрипт? Как называется эта настройка и где я могу изменить эту настройку?

Я приведу пример: Раньше у меня был скрипт PHP, который отправляет электронные письма примерно так:

for ($i=0; $i<count($emails); $i++) {
     mail($email[$i],'test','test');
}

Оказалось, что не все электронные письма были отправлены успешно, потому что скрипт работал так быстро, что между отправкой электронной почты не было достаточно времени, требуемого сервером.

Имею ли я смысл?

Ответы [ 2 ]

4 голосов
/ 25 апреля 2010

Вы можете использовать одну из этих функций, чтобы ничего не делать некоторое время:

  • sleep(): задерживает выполнение программы на указанное количество секунд.
  • usleep(): задерживает выполнение программы на указанное количество микросекунд.


Помещение одного из них в ваш цикл должно помочь.
Например:

for ($i=0; $i<count($emails); $i++) {
    mail($email[$i],'test','test');
    usleep(100*1000); // 100 milli-seconds
}
1 голос
/ 25 апреля 2010

Этот сценарий не проверен, но теория обоснована. При каждой отправке почты проверяйте последовательность задержки, чтобы увидеть, отправлено ли письмо. Я установил ограничение, чтобы гарантировать, что сценарий не потерпит неудачу - при печати время выполнения не должно быть проблемой.

for ($i=0; $i<count($emails); $i++) {
   $sent = mail($email[$i],'test','test');
    $count = 0;

   while($sent == false) {
    usleep(500); // half a second - test this number until the minimum is found
    $count++;

    if($count == 1000) {
        echo "Email to " . $email[$i] . " failed due to timeout</br>";
        break;
    }
   }
}

это помогает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...