сборка мусора в сессии будет происходить при управлении сессией с базой данных в php? - PullRequest
0 голосов
/ 02 июня 2010

Как или когда будет происходить сборка мусора с сеансом в случае управления сеансом с базой данных в php? Я сделал управление сессиями с базой данных. Но это не удаление сведений о пользователе, который завершил срок действия.

Ответы [ 2 ]

5 голосов
/ 02 июня 2010

не удаляются данные пользователя, который завершил срок действия.

Люди всегда, кажется, смущены этим.

Сборка мусора запускается на основе броска кубика при каждом вызове session_start (). Поэтому, если бы все ваши клиенты внезапно прекратили доступ к вашему веб-серверу одновременно, сборка мусора никогда не сработала бы, а данные сеанса сохранялись бы бесконечно долго.

Однако обработчик сеанса отвечает за то, чтобы возвращать данные сеанса только в том случае, если сеанс был ранее доступен до истечения TTL. Поэтому каждый раз, когда сеанс сохраняется, обработчик должен обновлять метку времени в файле / записи данных сеанса, даже если данные не изменились.

Если данные сеанса возвращаются обработчиком после истечения срока действия TTL, то есть ошибка в обработчике сеанса.

Однако вы просто заявляете, что данные существуют после истечения сеанса - это совершенно нормально.

OTOH, если вы просто хотите сократить накладные расходы на хранение большого количества сеансов с истекшим сроком действия, вы можете заставить сборку мусора происходить чаще, увеличив gc_probability или уменьшив gc_divisor. Но затем вы затрачиваете больше усилий на обработку обработчика запросов.

С

0 голосов
/ 02 июня 2010

Вы должны зарегистрировать обработчик gc как часть вызова функции session_set_save_handler () , которая позаботится об удалении сеансов с истекшим сроком действия.

Также убедитесь, что настройки ini session.gc_probability, session.gc_divisor и session.gc_maxlifetime настроены в соответствии с вашими потребностями в сборе мусора.

...