Я хотел бы в режиме реального времени обновлять мой вид карты, когда кто-то добавляет сообщение, не обновляя страницу в Ушахиди (проект веб-сайта с открытым исходным кодом). Его бэкэнд использует php (фреймворк Кохана) и базу данных MySQL, а интерфейс использует AngularJS. Там может быть не встроенный механизм по этому поводу. Поэтому я хочу узнать, какие материалы подходят.
Во-первых, мне нужно использовать управляемую событиями библиотеку, такую как этот, обнаруживать изменения базы данных. Во-вторых, как обнаружить изменения в базе данных. В-третьих, используйте библиотеку на основе веб-сокетов, такую как Socket.io, в режиме реального времени отправить данные на внешний интерфейс для отображения.
я прочитал echo
особенность в фреймворке Laravel php, которая, кажется, подходит этому, но не в Kohana. Есть ли лучший подход в этой системе или хорошие ссылки? Спасибо
Давайте начнем с более простого вопроса: отправка уведомлений.
PHP не подходит в качестве сервера WebSocket (хотя вы можете сделать это). Лучше написать это в Node и уведомить об этом из PHP. Сервер WS будет продолжать отправлять уведомления. Вы также можете воспользоваться коммерческим сервисом, который сделает это.
Обнаружение изменений в базе данных: Если заявка была написана правильно (т.е. она использует ORM
не сырой INSERT/UPDATE/DELETE/REPLACE
запросов), то достаточно изменить save
метод с использованием https://docs.koseven.ga/guide-api/ORM#changed данные.
Если есть несколько необработанных запросов, вы можете обработать их вручную.
В противном случае вы можете использовать триггеры. Отметить запись как обновленную (например: вставить данные в журнал / таблицу уведомлений). На сервере WebSocket вы можете периодически проверять эти данные и уведомлять получателей.
Других решений пока нет …