Отправка e-mail через PHP socket (сокеты)

Опубликовано в (Техническое отступление) | автор splogmaster | 05-11-2008

Тэги: , , , , , , , , , ,

Я возвращаюсь к теме создание сплогов на blogger.com, а конкретно к вопросу 10000 и более сплогов на blogger.com. Как было сказано, автопостинг в сплог на blogger.com происходит путем отправки e-mail на специальный адрес электронной почты, который вы выбираете в настройках блоггерского блога, затем вы создаете задание cron с выполнением скрипта по отправке письма - все, автопостинг настроен. НО. При создании большого количества сплогов нужно подумать об оптимизации скрипта для автопостинга, поскольку справится с сотнями заданий cron  и с тысячными отправками писем сможет только выделенный сервер.

В посте создание сплогов на blogger.com я выкладывал сриптк для автопостинга, который основывается на использовании PHP функции mail() - на каждый вызов этой функции создается свой процесс, примерно для 3000 сплогов с периодичностью автопостинга 1-2 часа этих процессов создается до 100 штук одновременно. В случае, если письма по каким- то причинам не отправляются сразу же, эти процессы остаются активными и начинают накапливаться, что непременно приведет к подвисанию сервера. Поэтому, я перешел на отправку писем через PHP socket (сокеты) - в этом случае за отправку писем будет отвечать почтовый сервер, будет выполняться почтовая очередность и не будет проблем с процессами. Это был первый и главный момент по оптимизации скрипта для автопостинга.

Второй момент: одним скриптом постить только в один сплог - это слишком расточительно, поэтому я перешел на автопостинг сразу в 25 сплогов (как раз по 25 сплогов я создаю на каждый blogger-аккаунт), для этих целей пришлось доделать трубу, которая стала выдавать сразу 25 item‘ов по одному на каждый сплог (что такое item смотрите в структуре формата RSS). Соотвественно, в скрипте появился цикл, внутри которого перебираются email-адреса, берется индекс в массиве каждого адреса, по этому индексу берется item из контентной RSS, и через сокеты отправляется письмо:

channel->item;
   foreach($blogger_mail as $index => $mail)
   {
    $subject = $items[$index]->title;
    $message = $items[$index]->description;
    socketmail("localhost", $mail, "[email protected]", $subject, $message);
 }

?>

Шаблонный вариант скрипта для автопостинга на blogger.com через сокеты лежит здесь

Я не рекомендую пользоваться обычным вирутальным хостингом, даже сокеты вас не спасут. Лучше возьмите самый хилый VDS (виртуальный выделенный сервер) на firstvds.ru за 149 р. в месяц - этого вполне хватит на 3000 или даже больше сплогов с обновлением через каждые 1-2 часа. Для тех, кто в теме: на firstvds.ru PHP работает только как cgi, т.е. при собственноручной настройке PHP на консольный режим работы "php-cli" производительность по идее должа вырасти - я пока еще не полностью разобрался, как включить этот консольный режим с поддержкой нужных модулей.

Мой блог находят по следующим фразам





Комментарии:

Оставить комментарий