У меня есть сайт, на котором я использую сеансовую авторизацию для своих пользователей. Подробности:
PHP Version 7.2.8
session.gc_maxlifetime 604800
session.gc_probability 1
session.gc_divisor 1000
Я использую следующий файл db.php для создания сеанса
$dinamo_session = session_name("dinamo_session");
ini_set('session.cookie_domain', '.DOMAIN_NAME');
#if (isset($_REQUEST[session_name("dinamo_session")])) {
#ini_set('session.cookie_lifetime', 604800);
#ini_set('session.gc-maxlifetime', 604800);
#ini_set('session.save_path', '/var/www/user9357/data/_SESSIONS');
session_start();
#session_regenerate_id(true);
#session_write_close();
#}
Мои пользователи со своей стороны не жалуются, вроде все в порядке, единственное, что я вижу растущее количество сессионных файлов нулевого размера (равно как и обычные сессионные файлы с реальными данными сессии) Вы можете видеть, что различные строки кода закомментированы. Я пытался использовать их все, чтобы избежать создания этих файлов нулевого размера, но это не помогло (isset - проверить, была ли сессия создана ранее, session_regenerate_id(true) - удалить старые файлы), но не повезло. Мне даже пришлось закомментировать isset, так как некоторые пользователи жаловались, что не могут войти в систему. Я также проверил, что: Opera и Firefox были в порядке, но браузер Vivaldi не смог войти
Любые идеи, почему эти нулевые файлы создаются и как я могу это остановить?
Привет, Джон. Я пишу что-то в файлах сеанса, так как их сотни с реальной информацией о сеансе. И все пользователи там успешно авторизовались. Доменное имя ненастоящее, я просто заменил его в коде на .DOMAIN_NAME, чтобы вставить сюда информацию. Единственное, о чем я могу думать, это то, что я использую RedBeanPHP (ORM для PHP) для создания и выбора пользователей, но я не знаю, как это может повлиять на создание пустых файлов сеансов. Интересно, есть ли реальный способ найти причину создания этих пустых нулевых файлов?
Что, если, скажем, кто-то просто зайдет на вашу домашнюю страницу или что-то подобное, а затем уйдет. Они получают сеанс, они получают какие-либо данные? Вы говорите, что другие сеансы работают нормально, поэтому я не хочу говорить, что некоторые случайные сеансы просто не работают.
Я попытался использовать функцию isset 'if (isset($_REQUEST[session_name("dinamo_session")])) {' для запуска сеансов только тогда, когда он был создан ранее - не помогло. Нулевые файлы продолжают создаваться
Хорошо, я поигрался с логикой своих файлов и надеюсь, что найду причину этих пустых файлов Единственное, чего я не понимаю, это то, что когда я хочу удалить сеанс, я использую следующий код $dinamo_session = session_name("dinamo_session"); session_start(); session_destroy(); $_SESSION = array(); И я не понимаю, почему Я все еще вижу в своей консоли существующий файл cookie сеанса и вижу пустой файл. И когда я снова вхожу в систему, я вижу, что старый файл (который раньше был нулевого размера) снова заполнен данными. Есть ли способ удалить файл сеанса вместе с файлом cookie?
Во всяком случае, теперь я вижу, что количество файлов сеанса стабильно и не увеличивается с каждым днем (возможно, старые файлы корректно удаляются сборщиком мусора). Спасибо за помощь, и я продолжу думать о правильной архитектуре веб-приложения)






Может быть, вы ничего не пишете на эти сеансы? Является ли cookie_domain определенно правильным?