[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблемы с функцией mail()
inpost
Есть список подписчиков. Всё честно и законно, люди поставили галочки и хотят получать письма :)
Идёт банальная рассылка по пользователям:
SELECT `email` //запрос занимает меньше секунды.
while()
mail();


Каждый mail() обрабатывается за 0.02 сек, примерно. Вроде всё норм. После 100-ой, начинаются следующие проблемы: случайным образом один из 50 начинает слишком долго работать. Картина такая:
№120 - 0.02
№121 - 0.02
№122 - 9.12
№123 - 0.02
№125 - 0.02

и так далее, вот на 3 тысячи писем таких багнутых получается около 20-30, каждый от 5 до 15 секунд, и скрипт достаточно долго выполняется.
Кто что знает, почему такие глюки возникают на ровном месте.



Спустя 38 минут, 15 секунд (1.12.2011 - 17:20) Игорь_Vasinsky написал(а):
VPS или хостинг?
может у хостера стоит ловушка какая нить.

Спустя 1 минута, 58 секунд (1.12.2011 - 17:22) I++ написал(а):
Скорее всего из-за MXов, которые либо перегружены, либо далеко находятся, либо они специально создают такие задержки. Излечить задержки не получится. Очень критично время выполнения? Если нет, пусть в бэкграунде хоть 2 часа крутится. А вообще можно отдельные процессы запускать на каждый e-mail по штук 20 e-mail на один форк. Форком тут очень удобно получится.

Спустя 1 минута, 42 секунды (1.12.2011 - 17:23) killer8080 написал(а):
По идее при каждом вызове mail(), sendmail устанавливает tcp соединение с сервером, авторизуется, шлет письмо и разрывает соединение. Возможно если сделать отправку через сокеты удастся ускорить процесс, посылая письма через одно соединение. Но это только предположение smile.gif
А может у smtp переполняется буфер и он блокирует прием сообщений, до того как разошлет уже загруженные. Можно попробовать сделать небольшую задержку, скажем через каждые 50 или 100 писем, как вариант.

Спустя 9 минут, 29 секунд (1.12.2011 - 17:33) inpost написал(а):
Игорь_Vasinsky
Сервер свой.

killer8080
Вот об паузе после каждых 100 - не подумал. Надо попробовать.

Хотя вот что на php.net говорят, что надо pear использовать... Эх, а никогда его не трогал...


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.