| 
 | 
| 
 
Отслеживание кто из пользователей онлайн 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Здравствуйте. Делаю портал на фреймворке CakePHP 3 + MySQL. Требуется сделать систему отслеживания кто из пользователей на данный момент находится онлайн. Принцип работы системы понятен, нужно при каждом заходе на любую из страниц обновлять в таблице users поле last_activity_date и записывать дату последнего обращения к скрипту. Но если пользователей будет много, боюсь что слишком много запросов будет к таблице users на обновление даты. Хочу сделать следующее, создать таблицу users_online типа memory с двумя полями user_id и last_activity_date и при каждом обращении к скрипту делать insert или update таблицы users_online, так как операции с таблицей которая находится в оперативной памяти будет в разы быстрее. Потом настроить крон, чтобы каждые 5 минут он выполнял скрипт, который будет делать следующее: Выбирать всех пользователей из таблицы users_online у которых дата последней активности больше чем 5 минут. Если такие пользователи есть, то значит они находятся в оффлайне, следовательно я беру дату их последней активности в таблице users_online и обновляю их дату последней активности в таблице users и удаляю их из таблицы users_online. Следовательно когда мне где-то на сайте нужно будет показать находится ли пользователе онлайн или оффлайн я буду делать следующее: Выбирать всех нужных пользователей из таблицы users делаю left join с таблицей users_online, если пользователь есть в таблице users_online тогда выводим на сайте, что он находится в онлайне, если записи в таблице users_online нет, тогда берем дату последней активности в таблице users и показываем, когда пользователь был последний раз на сайте. Еще нужно сделать дополнительный скрипт, который через ajax каждые 5 минут будет вызываться на любой странице сайта. Это нужно для того, чтобы если пользователь находится на одной странице большее 5ти минут то обновлять его дату последней активности в таблице users_online. В своей практике не разу не использовал таблице типа memory, по этому вопрос в слудеющем 1) Насколько целесообразно использовать в таком случае таблицу типа memory? Или можно с этим не заморачиваться и хранить дату последней активности в таблице users и все операции делать именно с этой таблицей. 2) Скрипт который будет вызываться через ajax каждые 5 минут, насколько целесообразно делать его на обычном php без использования фреймворка? Так как если я буду обращаться к обычному php то он сделает только то, что мне нужно, а если использовать фреймворк то он будет подгружать все классы которые ему нужны для работы. Спасибо. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 15.09.2017, 10:28 | 
  
  
  
   | 
||
| 
 
Отслеживание кто из пользователей онлайн 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  имхо, вам с первым вопросом в форум мусуля со вторым в форум пыхи а какую задачу решаете этим - "какие пользователи онлайн"? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 15.09.2017, 11:43 | 
  
  
  
   | 
||
| 
 
Отслеживание кто из пользователей онлайн 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  pr0n1xНо если пользователей будет много, боюсь что слишком много запросов будет к таблице users на обновление даты. Много - это сколько? Может не стоит преждевременно усложнять решение? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 15.09.2017, 12:25 | 
  
  
  
   | 
||
| 
 
Отслеживание кто из пользователей онлайн 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  skyANA, авторМного - это сколько? Может не стоит преждевременно усложнять решение? около 500 пользователей онлайн и каждый из них ходит по страницам сайта, это получается что каждый раз я должен апдейтить таблицу users ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 15.09.2017, 15:20 | 
  
  
  
   | 
||
| 
 
Отслеживание кто из пользователей онлайн 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  TIMESTAMP обновляется при каждом обращении юзера к приложению. В конфиг вынесите таймаут, например 5 минут. Это и будет критерием "онлайн" ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 15.09.2017, 15:32 | 
  
  
  
   | 
||
| 
 
Отслеживание кто из пользователей онлайн 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  pr0n1xskyANA, авторМного - это сколько? Может не стоит преждевременно усложнять решение? около 500 пользователей онлайн и каждый из них ходит по страницам сайта, это получается что каждый раз я должен апдейтить таблицу users Это не много, это мало. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 15.09.2017, 16:21 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=32&msg=39521737&tid=1540136]:  | 
    0ms | 
get settings:  | 
    8ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    52ms | 
get topic data:  | 
    12ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    52ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 231ms | 
| total: | 379ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.