есть задача считать онлайн пользователей на сайте , как я вижу самое оптимальное решение считать пользователей по сессиям , ребята подскажите где в Yii2 можно создать сессии и после все их посчитать ? или может еще будут какие-то идем считать пользователей онлайн без БД
может кому пригодится или кто поможет оптимизировать , разделил на два этапа первым записую файл а вторим считаю , ниже код
public static $nameFile = 'base_sessions.dat';
/**
* Записуем онлайн пользователей в файл
*/
public static function setUsers()
{
if(Yii::$app->session->get('online') !== null){
return true;
}
Yii::$app->session->set('online', '1');
$base = __DIR__.'/../../frontend/web/online/'.static::$nameFile; //файл, в котором храним идентификаторы и время
if (!file_exists($base)) {
if (!file_exists(__DIR__.'/../../frontend/web/online/')) {
mkdir(__DIR__ . '/../../frontend/web/online/', 755);
}
touch($base);
}
$LastTime = time() - 300; //через какое время сессии удаляются (время в секундах)
$file = file($base);
$id = session_id(); //выделяем уникальный идентификатор сессии
if ($id != '') {
$ResFile = array();
foreach($file as $line) {
list($sid, $utime) = explode('|', $line);
if ($utime > $LastTime) {
$ResFile[$sid] = trim($sid.'|'.$utime).PHP_EOL;
}
}
$ResFile[$id] = trim($id).'|'.time().PHP_EOL;
file_put_contents($base, $ResFile, LOCK_EX);
}
return true;
}
/**
* @return int|mixed
* Считаем онлайн пользователя из файла
*/
public static function CountUser()
{
if (!$countOnline = Yii::$app->cache->get('online_count_user')){
$dirFile = __DIR__.'/../../frontend/web/online/'.static::$nameFile;
if (!file_exists($dirFile)) {
return 0;
}
Yii::$app->cache->set('online_count_user', $countOnline = count(file($dirFile)),60 );
}
return $countOnline;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Необходимо заполнить форму на сайтеЗатем полученные данные записать в таблицу в базу данных
При развертывании проекта на CakePHP в XAMPP столкнулся с такой проблемой:
Хочу получить данные из Google Analytics с определенного аккаунтаДля того чтобы получить информацию по аккаунту нужно пройти oAuth2 авторизацию и разрешить...