Добрый день (или вечер может у кого)
Пытаюсь написать скрипт который бы вел онлайн статистику пользователей (точней количество пользователей в данный момент)
Вообщем, что-то я намалевал, но нифига не записывает в базу.
function users_online()
{
// TODO: Сделать так чтобы работал сам по себе, не использовал базу данных, только SQLite.
// TODO: Возможность отслеживать пользователей до недели или месяца.
$sqlfile = ROOTPATH.UNIQHASH.DIRECTORY_SEPARATOR.SQLITEDB;
$track = new Visitor();
$sqlite = new SQLitedb($sqlfile);
if (session_id() == '') session_start();
$session = session_id();
$curTime = time();
$timeout = $curTime - 60; // Время
$ip = $track->get_ip();
$sqlite = new SQLite3(':memory');
$sqlite->exec('CREATE TABLE IF NOT EXISTS tmp_users_online (
`session` varchar(255) NOT NULL,
`usertime` varchar(255) NOT NULL,
`ip` varchar(255) NOT NULL
)');
$sql = 'SELECT COUNT(*) as count FROM tmp_users_online WHERE session = :sess';
$getusers = $sqlite->prepare($sql);
$getusers->bindValue(':sess', $session, SQLITE3_TEXT);
$result = $getusers->execute();
// Проверяем существует данный пользователь в базе
$u_online = $result->fetchArray(SQLITE3_ASSOC)['COUNT(*)'];
if (1 <= $u_online)
$sql = 'UPDATE tmp_users_online SET usertime = :curtime, ip = :addr WHERE session = :sess';
else
$sql = 'INSERT INTO tmp_users_online (usertime, ip, session) VALUES (:curtime, :addr, :sess)';
$objusers = $sqlite->prepare($sql);
$objusers->bindValue(':curtime', $curTime, SQLITE3_TEXT);
$objusers->bindValue(':addr', $ip, SQLITE3_TEXT);
$objusers->bindValue(':sess', $session, SQLITE3_TEXT);
$objusers->execute();
// Удаляем пользователей которые ушли с сайта определяем по $timeout
$sql = 'DELETE FROM tmp_users_online WHERE usertime < :tmout';
$deluser = $sqlite->prepare($sql);
$deluser->bindValue(':tmout', $timeout, SQLITE3_TEXT);
$deluser->execute();
// Достаем количество пользователей сейчас на сайте
$sql = 'SELECT COUNT(*) as count FROM tmp_users_online';
$fonline = $sqlite->querySingle($sql);
print_r($fonline);
}