Отложить отправку электронной почты с помощью php

Я использую цикл FOR для отправки писем из массива [250].

for ($counter = 0; $counter <= 250; $counter ++){
// send email function[$counter]

}

Я думал о функции sleep (), но поскольку у сервера есть ограничение по времени, это не вариант. Пожалуйста, помогите мне с этим!


person Asaf    schedule 22.09.2011    source источник
comment
Вы можете использовать set_time_limit, чтобы разрешить сценарий для выполнения дольше, чем по умолчанию.   -  person Rusty Fausak    schedule 22.09.2011


Ответы (4)


Чтобы отложить отправку писем в цикле, вы можете создать свою собственную функцию wait () с циклом внутри нее и вызывать ее перед итерацией. Если вы хотите подождать, чтобы избежать проблем с интернет-провайдером, прочтите этот ответ SO:

массовая отправка электронной почты с помощью PHP

person Todd Moses    schedule 22.09.2011

Без какого-либо планировщика вы всегда достигнете своего предела выполнения. Вы можете сохранить электронные письма в базе данных, а затем заставить cron их выполнить.

Или вы можете увеличить время выполнения:

<?php
   //replace 600 without how many seconds you need
   ini_set('max_execution_time', 600);

   ... loop through emails

?>

Зачем вообще их откладывать?

person ActionOwl    schedule 22.09.2011
comment
Чтобы Gmail Yahoo и другие почтовые провайдеры не пометили меня как спамера. Думаю, все равно поставлю cron, спасибо :) - person Asaf; 22.09.2011

По-видимому (непроверено) функция сна забирает контроль с php, поэтому максимальное время выполнения не применяется.

От: http://www.hackingwithphp.com/4/11/0/pausing-script-execution

«Обратите внимание, что максимальное время выполнения скрипта по умолчанию составляет 30 секунд, но вы можете использовать sleep () и usleep (), чтобы ваши скрипты продолжались дольше, потому что технически PHP не имеет контроля во время операции сна».

person PBSLuvr    schedule 16.09.2015

Используйте cron - почти все хосты позволяют вам использовать его (кроме хостов с бесплатным хостом), и они будут более чем рады помочь вам настроить его, если вам нужна помощь (если они вам не помогут, не давайте им свою Деньги)

person Niet the Dark Absol    schedule 22.09.2011
comment
Cron для чего? Мне нужно отправить электронное письмо с небольшой задержкой (около 5 секунд ...) Я не думаю, что cron может мне здесь помочь. Спасибо за ваш комментарий! - person Asaf; 22.09.2011
comment
Ах я вижу. Я не понял, где вы собираетесь использовать sleep (). Как говорит rfausak в комментарии к вашему вопросу, вы можете попробовать использовать set_time_limit, но я знаю, что некоторые хосты убивают процессы, которые работают слишком долго. Тем не менее, большинство хостов потребуют, чтобы вы сказали им перед массовой рассылкой писем (для предотвращения спама), так что в любом случае вам следует просить их о помощи. - person Niet the Dark Absol; 22.09.2011