что происходит между запуском рассылки и появлением 500 ошибки?

зверек

Новичок
что происходит между запуском рассылки и появлением 500 ошибки?

О рассылках много тем создано, я уже два часа их читаю, на многие вопросы для себя ответила. Но какие-то остались
Сразу предупреждаю, что я чайник, не ругайте сильно.

рассылка просиходит путем перебора в цикле адресов из базы и отправки на выбранный адрес ф-цией mail().
Используются
include('Mail.php');
include('Mail/mime.php');

Это мне пров навязал, сказав, что функционирование sendmail на сервере с хостингом мы не предоставляли и не предоставляем.

Подписчиков на сайте пока всего ничего, порядка 50 чел. Отсылается письмо в виде html файла размером порядка 20Кб.

Ну и вобщем, спустя несколько секунд выскакакивает это гнусное Internal Server Error.

1. что в эти несколько секунд происходит? Письма отправляются или нет? Я сама подписана, не получаю. Но прям боюсь эксперементировать, вдруг часть народу все-таки успевает получить? Поставила в цикле сразу после ф-ции отправки уведомление типа: echo "на адрес".$adres.'письмо ушло'; Уведомления не появляется. По идее и ф-ция не срабатывает..Но мало ли?

2. Это нормально, что 20 кил на 50 адресов не могут отправится?

3. В таких ситуациях народ ограничивает выполнение скрипта каким-то определенным числом адресатов, после чего скрипт запускают вновь. Как понять какой лимит адресов надо делать? Наверняка это зависит от объема письма. Как скоррелировать число подписчиков и объем отсылаемой инфы?

4. Может такая фигня быть, потому что в цикле я на самом деле отрабатываю не саму ф-цию mail(), а ф-цию, которая эту mail() формирует?

спасибо.
 

зверек

Новичок
А что в лог -файлах есть ответ на вопрос, нормально ли, что выдается 500 ошибка при попытке сделать рассылку 20-и Кил на 50 адресов?

В лог файлах написано соотношение объема инфы и количесвта адресов для нормальной работы скрипта?

В лог файлах написано, что я некорректно построила скрипт?

Если это все написано там - научите пожалуйста выуживать эту инфу из логов, я ее там не вижу. Допускаю, что в силу своей серости.
 

ABORIGEN

Guest
Зверек, помню мы такую задачку решали. Почти сразу отказались от работы с mail(), потому что она оооочень медленная, а в цикле, когда ей сыплется подряд письма, происходит элементарное переполнение буфера ввода сервера. На разных машинах значение разное, но даже 20х50=1Мб, т.е. уже только под данные пользователя весь объем буфера "скушан" ;-)

Надо заметить, что Вас провайдер уж ооочень сильно ужал, у нас в свое время проблема обнаружилась при подписной базе в 200 адресов и размером письма примерно таким же.

Решили проблему через почтовый класс (дал бы ссылку, но давно уже это было, года три назад), который напрямую отправлял почту через sendmail, причем по каждому письму дожидался ответа сервера, что отправка прошла успешно.

Могу предложить следующее: во-первых в цикле сделать задержку после каждого выполнения функции mail(), ну хотя бы 5-10 секунд. Во-вторых, кажется mail() уже давно поддерживает формат обращения, при котором можно было указать адрес smtp-сервера, возможно причина ошибки в том, что smtp-сервер Вашего провайдера настроен так, чтобы "рубить гадов спамеров", когда отправка сообщений с одного адреса идет потоком ...
 

зверек

Новичок
"рубить гадов спамеров" - вряд ли :)
Ведь рассылка на те же адреса маленкого кусочка текста (8 кил) проходит норамально.

sendmail у нас по любому не работает.

Паузу я сделаю после ф-ции рассылки..Но ведь вот вывод некой фразы я сделала, а он не произошел. То есть ощущение, что скрипт захлебнулся уже на первом адресе...странно.
 

Cougar

Кошак
зверек
В логах как минимум будет написано, почему скрипт свалился в 500.
 

зверек

Новичок
aborted: (first read) idle timeout (30 sec) - это написано в логах.

но это не дает ответа на вопрос, отправляется ли почта (хотя я просто экспериментальным путем уже выяснила, что не отправляется). Все равно, не понятно, что происходит в эти 30 секунд.

-~{}~ 26.01.05 18:13:

ошиблась я...

вообще фигня какая-то происходит. Они то рассылаются, то нет. А 500-я ошибка все равно выскакивает!!!

забила в тестувую таблицу 10 адресов (одинаковых..свой адрес...но это не суть..значит я должна получить 10 писем) и делаю рассылку 50Кб текста.
Приходят все 10 писем, но браузер выдает 500-ую...Почему так?
После ф-ции рассылки в таблицу напротив адреса ставится флажок, что письмо ушло.
В моем случае флаги не ставятся...
Однако письма приходят!!!
Объясните пожалуйста, что происходит!

-~{}~ 26.01.05 18:24:

а в логах при этом пишется:

FastCGI: incomplete headers (0 bytes) received from server "/export/home/имя_сайта/_PHP/php.fcgi", referer: http://www.имя_сайта.ru/admin/test_mail.php
 
Сверху