Попытаюсь сформулировать проблему как можно четче.
Я добавил на сайт DbSession (как это советовалось тут), чтобы он регистрировал последнюю активность всех пользователей. Проблема в том, что при одном запросе от любого пользователя, происходит огромное кол-во записей (удаляется старая сессия, добавляется новая, и так много раз). За несколько дней разработки сайта я обнаружил, что идентификатор таблицы остановился чуть ли не на 8 миллионе.
И еще косвенная проблема.
Если пользователь зарегистрирован, DbSession сам определяет пользователя из таблицы и обновляет его последнюю активность (но огромное кол-во обращения к бд остается). Если пользователь не зарегистрирован, то огромное кол-во раз удаляется сессия и снова добавляется.
Нужно чтобы происходил один запрос в DbSession при одном запросе или чтобы можно было определять не зарегистрированных пользователей и тоже только обновлять сессию, без удаления и добавления новой. А лучше то и то:)
Как это можно реализовать?
Все гораздо проще. Чтобы незарегистрированных пользователей тоже идентифицировало, необходимо добавить использование куки в конфигах приложения.
$config = [
'components' => [
'session' => [
'class' => 'yii\web\DbSession',
'writeCallback' => function ($session) {
return [
'user_ip' => Yii::$app->request->userIP,
'user_id' => Yii::$app->user->id,
'last_write' => time(),
];
},
'useCookies' => true, // ВКЛЮЧАЕМ ИСПОЛЬЗОВАНИЕ КУКИ
'timeout' => 60 * 60 // 1 hour
],
]
]
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Использовал команду php artisan make:auth для авторизации но теперь нужно все изменения удалить, не хочу переустанавливать Laravel, есть ли встроенные...
Возможно ли при нужном юзерагенте вывести Ip адрес,а в остальных случаях показывать нужное видео
Периодически замечаю, что в студии слетают брейпоинтыРаньше помогал clean - rebuild