Я хочу добавить онлайн или офлайн функцию на моем сайте, который построен на PHP Codeigniter framework.
Я нашел эту библиотеку OnlineUsers0.2 . Но я уже использую встроенный класс сеанса, и я хочу использовать его в онлайн-сервисах.
Моя идея – вставить другое поле в таблицу ci_sessions
с идентификатором пользователя, а когда я ci_sessions
информацию пользователя, я делаю чек в эту таблицу на основе идентификатора пользователя, если он существует в таблице last_activity
а last_activity
– менее 5 минут, чем пользователь онлайн, и если он не существует или last_activity
составляет более 5 минут, чем пользователь в автономном режиме.
Итак, мой первый вопрос заключается в том, как добавить это поле ci_sessions
таблицу ci_sessions
и это хороший способ сделать это.
И мой второй вопрос – лучший способ сделать то, что я ищу?
Отвечая на ваш второй вопрос, вы можете легко использовать javascript-websockets для этого в режиме реального времени. Вы также можете использовать длительный опрос с использованием той же логики, но это не очень хороший подход, если у вас много пользователей вашего приложения.
Функция онлайн в режиме реального времени Просто создайте столбец «is_online» в таблице ваших пользователей и напишите функцию, чтобы обновить флаг состояния is_online в базе данных.
Создайте свой phs-сервер с помощью http://socketo.me/ или https://github.com/nekudo/php-websocket . Здесь будет храниться ваша логика сервера, то есть, если пользователь начнет онлайн-обновление онлайн-флага и наоборот.
В javascript, использующем websockets, вы можете просто подключить onopen и onclose событие для выполнения функций на стороне сервера. Когда пользователь нажимает на любую вашу страницу, просто обновляйте статус в базе данных.
function WebSocketTest() { if ("WebSocket" in window) { alert("WebSocket is supported by your Browser!"); // Let us open a web socket var ws = new WebSocket("ws://localhost:9998/echo"); ws.onopen = function() { // Web Socket is connected, send data using send() ws.send("Message to send"); alert("Message is sent..."); }; ws.onclose = function() { // websocket is closed. alert("Connection is closed..."); }; } else { // The browser doesn't support WebSocket alert("WebSocket NOT supported by your Browser!"); } }
Дополнительная ссылка http://www.tutorialspoint.com/html5/html5_websocket.htm