|
|
|
| Здравствуйте!
хостер установил ограничение на рассылку (300 писем в час) адинистратор сайта кликает где-то утром рассылку, как мне ее разбить на части?
#$num1 количество подписчиков из базы
#$email массив адресов, подписавщихся на рассылку
for($i=0; $i<=$num1; $i++){
echo $email[$i]."<br>";
mail($email[$i], $subject, $message, $headers,$five);
}
|
| |
|
|
|
|
|
|
|
для: vadimka
(21.02.2011 в 18:30)
| | гы, чо.
for($i=0; $i<=$num1; $i++){
echo $email[$i]."<br>";
mail($email[$i], $subject, $message, $headers,$five);
if ($i & 300 == 0)
sleep(3600);
}
|
| |
|
|
|
|
|
|
|
для: neadekvat
(21.02.2011 в 18:51)
| | не понял...
мне показалось, что вроде в это направление:
$part=0;
for($i=$part; $i<=$num1; $i++){
mail($email[$i], $subject, $message, $headers,$five);
$sum=$num1-$part;
if ($part>300){
$part+300;}else{
$part+$sum;
}
sleep(3600);
}
|
| |
|
|
|
|
|
|
|
для: vadimka
(21.02.2011 в 19:09)
| | нашел такой скрипт:
set_time_limit(0);
foreach ($email as $i)
{
mail ($i, 'Subscription', 'Text');
sleep (12);
}
|
правильный ли он? | |
|
|
|
|
|
|
|
для: vadimka
(22.02.2011 в 16:40)
| | Зависит от того, что вам требуется и как вы формируете массив $email. Если он отсылает то, что вам требуется - он правильный. | |
|
|
|
|
|
|
|
для: cheops
(22.02.2011 в 16:51)
| | тогда еще вопрос - если закрывается страница, его вызвавщая, скрипт работает дальше? | |
|
|
|
|
|
|
|
для: vadimka
(22.02.2011 в 16:52)
| | Не факт, может и прекратиться. Вообще такие задачи лучше на cron вешать - тогда они гарантировано будут выполняться до конца. | |
|
|
|
|
|
|
|
для: vadimka
(22.02.2011 в 16:52)
| | нет.
Его выполнение прекращается вместе с процессом обработки HTTP-запроса. | |
|
|
|
|
|
|
|
для: Trianon
(22.02.2011 в 16:56)
| | администратор, делает рассылку в ручном режиме. можно как-то без крона? или php работает ТОЛЬКО при открытой странице в браузере? | |
|
|
|
|
|
|
|
для: vadimka
(22.02.2011 в 17:10)
| | Скажем так, сервер заинтересован в работе только тогда, когда уверен, что пользователь еще заинтересован в результате. А почему бы администратору немного подождать, ясно, что обычные пользователи ждать не будут, но речь вроде идет об одном человеке, который во-первых дисциплинирован, во-вторых заинтересован в результате. Обычно проблем нет, ждут столько, сколько надо (правда, если ждать придется часами - браузер пошлет отбой или выйдет тайм-аут у сервера). В этом плане sleep() очень вреден, он только в случае cron полезен (и то не всегда), его обязательно использовать? | |
|
|
|
|
|
|
|
для: cheops
(22.02.2011 в 17:17)
| | надо сделать ограничение на количество отправляемых писем в час - 300 шт, пока подписано более 400, возможно в течении года количество удвоится... надо будет лезть в крон | |
|
|
|
|
|
|
|
для: vadimka
(22.02.2011 в 17:26)
| | Я бы знаете как сделал, вывел бы несколько ссылок, каждая из которых отправляет 300 писем без всякой задержки (ну 250 на всякий случай), при каждом нажатии, помещал бы в базу данных флаг по которому вместо других ссылок выводил бы надпись "Отправить следующую партию можно только через 1:00:00" (при перезагрузке время обновлялось бы). Ссылки на отосланные партии, разумеется выводить не нужно. | |
|
|
|
|
|
|
|
для: vadimka
(22.02.2011 в 17:26)
| | А еще можно вот как - отправлять все письма как есть, но проверять отправилось письмо или нет, те e-mail, по которым письмо не отправилось, запоминать и пытаться отправить в следующий заход администратора.
PS Ну это в том случае, конечно, если mail() честно возвращает false, когда срабатывает ограничение на рассылку. | |
|
|
|