2015-04-19 2 views
0

Я могу подключиться к базе данных просто отлично, но не уверен в синтаксисе $query и должен ли он быть циклом foreach или while ... но вот что я пытаюсь сделать :mysqli и php: структура запроса

У меня есть база данных со столом, называемым пользователями. У каждого пользователя есть значение, указывающее, записаны ли они в систему в настоящее время. И у меня также есть поле в каждой строке, которое обновляется с помощью $timestamp, который обновляет активность пользователей, так что они не могут быть отключены ...

Мне нужно знать, как я мог запросить базу данных по процедурному стилю mysqli и скажем, forech $person (или строка в таблице) проверьте, установлен ли столбец таблицы «Online» равным 1 или 0, и если он установлен в 1, тогда мне нужно иметь математическое уравнение, которое принимает $currentservertime и вычитает из $timestamp, хранящихся в базе данных, и проверяет, были ли они простоя дольше, чем говорят, 10 или 15 минут. И для каждого человека, который простаивал дольше этого времени, мне нужно изменить свой статус «Online» в базе данных с 1 на 0 (0, указывающий, что они не подключены к сети).

Это просто функция, которая избавится от статуса онлайн-пользователей в базе данных, если они приблизится к своему браузеру и не вернутся должным образом, покинув программу или выйдя из системы.

Благодарим вас за помощь всем, кто может помочь мне с каким-то кодом или указать мне правильный путь. Сначала я искал поиск, но, основываясь на необходимости делать две разные вещи одновременно, я не мог найти то, что искал.

+0

это может быть сделано в одном запросе, не PHP не требуется –

+0

любые примеры, было бы весьма признателен, поэтому им здесь, потому что я не знаю, как и не может найти много онлайн с две операции. это все очень неопределенно :) – cjackson

ответ

0

Вам не нужно выбирать все строки и фильтровать PHP, потому что, если таблица пользователей составляет около 10 миллионов строк, ваша операция будет очень медленной. Вы можете установить автономных пользователей без использования PHP. Ваш запрос может быть:

$maxInactivity = 15; // in minutes 
$timestampToGoOffline = time()-($maxInactivity*60); 
$sql = "UPDATE users SET status = 0 WHERE last_action_timestamp < $timestampToGoOffline"; 
+0

Спасибо за такой быстрый ответ. Я дам эту попытку, как только смогу и дам вам знать :) – cjackson

+0

просто хотел сбросить линию и сказать, что это сработало отлично. Спасибо! даже если они немного задержались. – cjackson

Смежные вопросы