Задать вопрос
Mihairu
@Mihairu
web-программист

Node.js и php — как совместить?

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

Пришел к выводу, что нужно прибегнуть к node.js, но тут встает другая задача - сам сайт написан на php. Можно-ли эти две вышеперечисленные вещи как-то совместить? Использую фреймворк CodeIgniter 3.
С node.js никогда не работал, поэтому не знаю, что из этого выйдет.
Или есть другие варианты? Буду очень благодарен за помощь)
  • Вопрос задан
  • 2168 просмотров
Подписаться 2 Средний 1 комментарий
Решения вопроса 1
Я был в похожей ситуации, поставил сокет сервер и отдельно сайт на php. Получилось так, что сокет-сервер нагружал систему очень сильно (там были проблемы c DDOS).

В итоге решил, т.к. данные для всех одинаковые, просто ставил скрипт по cron все записывал в json файл, а дальше обычным ajax его забирал раз в секунду, файл отдавался nginx, т.е. не нужно было подниматься всякие бекенд-процессы, в результате нагрузка значительно упала.

А с node - будет проблема (если вы до этого с ней не работали) расширить так, чтобы работало на всех ядрах (или на половине) и чтобы сокеты корректно отправляли информацию, нужно будет использовать какой-нибудь брокер сообщений.

Не используйте node в данной ситуации, я бы вам это посоветовал.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 6
@DuD
Поставьте Redis и по крону лейте в него последние данные из бд. Забирайте из редиса тем же php. Смысл плодить зоопарк технологий не понятен.
Ответ написан
@LiguidCool
Бред. В чем отличие в взаимодействии php и node с БД? Когда ответите на вопрос, поймете всю абсурдность задачи.
Ответ написан
begemot_sun
@begemot_sun
Программист в душе.
Могу сделать веб-сокет сервер, с http API.
Т.о. веб-клиенты будут цепляться по вебсокету к серверу, а ваша какая-то часть будет использовать API чтобы пославть какие-то сообщения клиентам, адресно или броадкастом.
Ответ написан
zoonman
@zoonman
⋆⋆⋆⋆⋆
Возьмите socketo.me и добавьте веб-сокеты на страницу. Вместо zeroMQ можно redis pub/sub прикрутить, если хотите.
Ответ написан
Комментировать
zTrue
@zTrue
Риал тайм уведомления с node.js + php
1) Комет сервер на ноде (для простоты можно заюзать socket.io)
2) При обновлении данных стучать в комет сервер из php скрипта (лучше асинхронно, можно заюзать очереди типа beanstalk). Это не мониторинг БД, но если у Вас как-то упорядоченно обновляются данные в БД, то вряд ли это станет проблемой.
3) При стуке в comet из PHP слать уведомления клиентам
Ответ написан
Комментировать
akzhan
@akzhan
Вам не нужен Node для этого. Если точнее, можно использовать что угодно.

https://habrahabr.ru/post/209864/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы