Отправка e-mail через PHP socket (сокеты)
Опубликовано в (Техническое отступление) | автор splogmaster | 05-11-2008
Тэги: blogger, firstvds.ru, PHP, rss, VDS, автопостинг, нагрузка, оптимизация, сервер, скрипт, Хостинг
Я возвращаюсь к теме создание сплогов на 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" производительность по идее должа вырасти - я пока еще не полностью разобрался, как включить этот консольный режим с поддержкой нужных модулей.
Мой блог находят по следующим фразам
- отправить email через php
- скрипт регистрации blogger
- wordpress убрать дату поста
- бесплатный хост для wordpress
- php utf 1251 конверт
- splogmaster
спешу сообщить: результат тестирования скрипта для автопостинга на блоггер через сокеты на бесплатном хостинге через cron дал положительный результат, так что необходимость в платном хостинге отпадает
[...] socket хостинг сокет [...]
[...] socket PHP [...]
Привет…
Хотелось бы манульчик про бесплатный хостинг, сокет и крон…а то кручу верчу и не х…… не выходит….
за этот блог и за твои старания огромное мерси
splogmaster на каком бесплатный хостинге ты запускал этот скрипт?…