|
|
|
| Подскажите пожалуйста как можно упростить/ускорить выполнение следующего кода не прибегая к вызову функции (setUserToOffline) из функции и не создавая массива из данных запроса для последующего while обхода:
//Удаление старых сессий
function GC($maxlifetime)
{
$query="delete from wsl_sessions where session_expire<NOW() - INTERVAL '10' MINUTE";
$this->mydb->Query($query);
$query="select user_id from wsl_online_users where session_expire<NOW() - INTERVAL '10' MINUTE";
$this->mydb->Query($query);
while($row=$this->mydb->FetchArray())
{
$this->setUserToOffline($this->mydb,$row[0]);
}
$query="delete from wsl_online_users where session_expire<NOW() - INTERVAL '10' MINUTE";
$this->mydb->Query($query);
return true;
}
//Перевод пользователя в оффлайн где online - Статус, lastvisit - последнее посещение DATETIME
function setUserToOffline($mydb,$user_id)
{
$query="update wsl_users set lastvisit=NOW(),online=0 where id=$user_id";
$mydb->Query($query);
}
|
| |
|
|
|
|
|
|
|
для: Skyonex_
(23.08.2006 в 16:15)
| | Можно поступить следующим образом
<?php
//Удаление старых сессий
function GC($maxlifetime)
{
$query="delete from wsl_sessions where session_expire<NOW() - INTERVAL '10' MINUTE";
$this->mydb->Query($query);
$query="select user_id from wsl_online_users where session_expire<NOW() - INTERVAL '10' MINUTE";
$this->mydb->Query($query);
while($row=$this->mydb->FetchArray()) $temp[] = $row[0];
if(!empty($temp))
{
$query = "update wsl_users set lastvisit=NOW(),online=0
where id IN (".implode(",",$temp).")";
$mydb->Query($query);
}
$query="delete from wsl_online_users where session_expire<NOW() - INTERVAL '10' MINUTE";
$this->mydb->Query($query);
return true;
}
?>
|
Т.е. смысл в том, что сформировать запрос вида
UPDATE wsl_users SET ... WHERE id IN (1,4,6,8,38,104)
|
Если полю lastvisit назначить тип TIMESTAMP, то можно не указывать lastvisit=NOW(), это поле будет автоматически обновляться при каждом выполнении оператора UPDATE. | |
|
|
|
|
|
|
|
для: cheops
(23.08.2006 в 16:47)
| | Отлично! Спасибо большое! Сейчас попробую. | |
|
|
|