Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > Мгновенные оповещения пользователей


Автор: NFL 15.5.2014, 23:19
Вкратце опишу ситуацию.

Есть выделенный сервер (Intel Core i5-2400/8Gb, nginx+apache+php+mysql). На нем крутится один проект на Zend 1. Посещаемость 4-6к в сутки.
Общее число пользователей на данный момент порядка 12к. Пиковое количество запросов - порядка 20 в секунду, пиковая загрузка ЦП - до 50%.

На сайте есть каталог продукции, обновляется он 1-2 раза в день, добавляются в среднем 10-15 позиций (+/-10, точно не в курсе, могу просмотреть статистику).

Возникла задача - реализовать мгновенное (или хотя бы почти мгновенное, в течении 1..3 минут) оповещение пользователей о том что новый товар добавлен.

Насколько я понимаю, мыло в данном случае отправлять не вариант (отправка может идти и несколько часов, а товары "выгребаются" за полчаса-час, иногда и за 15-20 минут).

Я вижу тут следующие решения: Ставим ejabberd/openfire, рисуем простенькую прогу на дельфях (вшиваем в список контактов единственный сервисный + возможность изменить или даже тащим его с сервера при коннекте), регистрацию интегрируем (импорт в mysql-базу ejabberd'a с базы пользователей). 

Теперь сам вопрос: Выдержит ли сервер подобную нагрузку? Или есть какие либо более оптимальные методы? Ранее не приходилось заниматься рассылками "в реальном времени", надеюсь на советы. 

Всем заранее спасибо.
 smile 

Автор: NFL 17.5.2014, 22:47
Блин) Столько просмотров и никто не ответил(((

Пробовал RSS - там данные приходят через 4-5 минут, при том что дата обновления ленты ставится как дата последнего поста и в клиенте интервал 1 минута (клиентов разных пробовал).

xampp неудобен для конечного клиента... 

в итоге накарябал свою прогу на дельфе, раз в минуту дергает артикулы, буду тестить но все равно жду ответов от специалистов...

Автор: ksnk 18.5.2014, 11:51
https://dev.twitter.com/docs/tfw?

Товары обновляются раз в день, а информировать юзеров нужно моментально? 
Количество новых товаров 10-15, а отправка писем идет "несколько часов"?

Где то показания не сходятся, imho  smile 

Автор: NFL 18.5.2014, 12:08
ksnk, раз в день но по одиночке.

Т.е., админ жмет кнопку "добавить товар", заполняет, "сохранить". Должно улететь уведомление. И так 10-15 раз) smile 

Автор: ksnk 18.5.2014, 12:39
Насколько велика база пользователей? Почему рассылка по почте не подходит?


Автор: NFL 18.5.2014, 13:10
12k на данный момент)

По почте? Да вот из за епанутости заказчика - хочет же сразу при добавлении отправлять smile 
Это 100-120к писем в день...

Если удастся уговорить делать рассылку после завершения обновления то мб рассмотрим и такой вариант.

12-15к через Амазон говорят шустро улетят...

Автор: ksnk 18.5.2014, 14:53
12к.  И все честно-подписавшиеся? smile 

Боюсь, что массовые e-mail рассылки энергетически выгоднее делать через специальные сервера специальных людей, которые этим занимаются.

Более человеколюбивые методы - RSS или твитер. Во первых - они никак не могут быть объявлены спамом и пользователь сам от них отпишется если надо. Нагрузка на сервер - никакая.  RSS, вроде как не подходит. "недостаточно реактивен", остается твитер.
Проблема только в том, чтобы всем 12к пользователям предложить зарегистрироватся в твитере, но рассылка-же, вроде, работает? Классы для работы с ним несложно нарыть в phpclasses
 

Автор: NFL 18.5.2014, 15:10
ksnk, там все проще - зарегистрировался - значит хочешь получать уведомления smile 
интересно, если 0.5-1к пользователей будут дергать базу раз в минуту (а те кто менее активны - им РСС), сильно нагрузим серв?  smile 

//это в случае проги на дельфе, без сокетов, и ноды)

//если будет нагружать - всегда можно перескочить на ноду, клиент в этом случае ничего и не заметит...

 smile в общем будем думать) твиттер не вариант, это их там региться заставлять надо((

Автор: awdev 1.6.2014, 01:33
Тут выходит 2 пути решения:

1) Заставить людей поставить дополнительное ПО (плагин) или заставить регистрироваться на стороннем сервисе типа твиттера.
2) Уведомлять по существующим контактам (емайл)

Первый вариант сложнее ибо ставить или регатся мало кто будет.

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


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)