Псевдо-поток данных в реальном времени, JavaScript и PHP - PullRequest
0 голосов
/ 31 декабря 2018

Обновление: у меня создается впечатление, что это даже не тот сайт, на котором можно публиковать это.Если кто-то может указать мне правильное направление, я был бы признателен ...

У меня есть существующее приложение PHP + MySQL, которое не было создано для отображения данных в реальном времени или аналогичных данных в реальном времени.,Но теперь мне нужно сделать так, чтобы данные практически в реальном времени передавались в приложение и обновлялись.Эти оперативные данные предназначены только для 1 страницы приложения.

Посмотрел на такие вещи, как socket.io и библиотеки websockets на основе PHP, но это выглядело как излишнее, потому что данные в основном поступают из 1 источника и доставляются в1 человек (клиент).Несколько других пользователей могут запустить этот процесс, но каждый из них будет иметь свою конечную точку данных.Это ... как год в будущем.Но хорошо подумать.В идеале в системе должны быть сотни или тысячи пользователей, извлекающих свои данные в реальном времени.Поэтому я хочу, чтобы это было максимально упрощено и оказало минимальное влияние.

Пользователи должны пройти проверку подлинности и авторизоваться для использования данных.Это уже встроено в текущую систему.

API для получения данных (который уже был создан другим поставщиком) также НЕ является потоковым.Он установлен на 20-секундном кроне, поэтому новые данные доступны каждые 20 секунд, что удовлетворяет потребности клиента.

Мой текущий план - сделать что-то вроде этого ...

  1. Данные извлекаются из cron каждые 20 секунд, организуются и сохраняются в базе данных (завершено)
  2. Настроить # 1, чтобы он также выполнял любые дополнительные проприетарные вычисления для данных И компилирует + записывает файл JSON всервер (уникальный для пользователя), который является точными данными, необходимыми для внешнего интерфейса (данные БД необходимы для других страниц)
  3. Создание небольшого сервиса на основе PHP, который проверяет предоставляемый клиентом JWT и читает файл JSONout
  4. Запись внешнего интерфейса AJAX в конечную точку опроса из # 3 каждые X секунд с использованием JWT для авторизации

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

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Для меня, если вам нужно поддерживать глобальное состояние службы, потому что один запрос (-ы) клиента может повлиять на все остальные запросы (-и) подключенного клиента, тогда большинство всех языков сценариев на стороне сервера - не лучший выбор!Также для дальнейшего добавления, если вы планируете реализовать что-то подобное с помощью PHP, вы будете настраивать себя на живой кошмар!Почему, потому что проще говоря, реализация сокетов PHP (s) - это так плохо!

0 голосов
/ 31 декабря 2018

В начале я бы сказал, что нужно использовать API-решение :) Поскольку оно больше соответствует архитектуре и, безусловно, требует наименьшего объема работы.Также, если возникнут проблемы с «живым» ощущением данных, вы можете исправить их, проводя более частый опрос или вводя длинный опрос, предполагая, что вы изменили время работы cron.

Я имею в виду, что в конечном итоге все зависит от потраченного времени, не начинайте внедрять функции, которые не интересуют клиентов:)

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

...