Задержка отправки электронной почты с php - PullRequest
2 голосов
/ 22 сентября 2011

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

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

}

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

Ответы [ 4 ]

1 голос
/ 22 сентября 2011

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

Отправка массовой электронной почты с использованием PHP

0 голосов
/ 16 сентября 2015

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

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

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

0 голосов
/ 22 сентября 2011

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

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

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

   ... loop through emails

?>

Зачем вам их все равно откладывать?

0 голосов
/ 22 сентября 2011

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

...