Моя MYSQL таблица имеет следующую структуру:заказа в порядке, не используя событий
+------+----------+-----+-----------+----------------+----------+
| uuid | username | ... | clan_rank | user_is_online | last_act |
+------+----------+-----+-----------+----------------+----------+
Когда пользователь находится на сайте, я выполнить AJAX запрос, который обновляет last_act
поле и устанавливает user_is_online
истина в таблице каждые 30 секунд. Используя локальную машину, я могу включить событие, которое изменит значение user_is_online
на false, когда NOW() - last_act > 30
. Это используется, чтобы распечатать всех друзей по их статусу. Однако мне также необходимо заказать пользователей по их clan_rank
в отсортированном порядке по user_is_online
. Использование событий, это легко достигаются с помощью этого запросов:
'SELECT * FROM users WHERE user_is_online = 1 ORDER BY clan_rank DESC'
'SELECT * FROM users WHERE user_is_online = 0 ORDER BY clan_rank DESC'
Запросов выше будут первой печать всех пользователей онлайн и порядок их их родового рангом, а затем напечатать все автономные пользователь с таким же порядком ,
Но, к сожалению, на моем хостинге я не могу установить Event scheduler status
в состояние ON, и здесь я получаю проблему с печатью пользователей в нужном порядке.
Моя идея, что я должен заменить user_is_online = 1/0
NOW() - c_last_act < 30
в моих запросах, но это хорошее решение? Может быть, есть более эффективные?
Если у вас есть указатель на 'last_act', то он должен быть эффективным. Используйте 'c_last_act> NOW() - INTERVAL 30 second'. – Barmar