Мне нужно расширить сборщик мусора php, поэтому, когда он удаляет старый сеанс, он также должен удалить некоторые записи в базе данных. Я попытался использовать реализацию SessionHandlerInterface, но он не работает. Где я должен добавить свой код? Возможно ли, или эти реализации связаны со стандартными вызовами session_destroy, а не с уничтожением сборщика мусора?PHP расширять сборщик мусора
ответ
Функция session_set_save_handler позволяет подключать обратный вызов для многих сеансовых событий (открывать, закрывать, читать, писать, уничтожать и gc). В вашем случае destroy
и/или gc
могут сделать это.
Согласно documentation:
Уничтожает сеанс. Вызывается session_regenerate_id() (с $ destroy = TRUE), session_destroy() и при сбое session_decode().
Таким образом, функция уничтожения, определенная с помощью SessionHandlerInterface
, будет вызываться только тогда, когда сессия будет явно уничтожена во время сценария или в случае ошибки.
Чтобы уничтожить старые сеансы, вы должны использовать аргумент gc
session_set_save_handler
и удалить все записи с помощью datetime < currenttime - $lifetime
.
РЕДАКТИРОВАТЬ:
Обратите внимание, что есть только вероятность 1%, имеющий gc
называемого на самом начале запроса. Это означает, что это исполнение сильно зависит от того, сколько трафика у вас на вашем сервере. Когда вы работаете один на тестовом сервере, вы не можете легко его выполнить.
- 1. php memory limit сборщик мусора
- 2. Сборщик мусора
- 3. Как узнать, запущен ли сборщик мусора PHP
- 4. Как работает сборщик мусора в PHP
- 5. Функциональные переменные PHP и сборщик мусора
- 6. Сборщик мусора PHP: предположим определенный порядок уничтожения
- 7. LibGdx Сборщик мусора
- 8. Renderscript и сборщик мусора
- 9. Сборщик мусора в .NET
- 10. Сборщик мусора asp.net
- 11. Пользовательский сборщик мусора JavaScript
- 12. андроид сборщик мусора lingo
- 13. C# статический сборщик мусора?
- 14. java primitives сборщик мусора
- 15. Где начинается сборщик мусора?
- 16. Сборщик мусора в C++
- 17. Сборщик мусора Flash
- 18. Сборщик мусора в Java
- 19. Сборщик мусора против пула
- 20. Сборщик мусора SpiderMonkey
- 21. Haskell сборщик мусора
- 22. Успокаивающий возбужденный сборщик мусора
- 23. Сборщик мусора не работает
- 24. сборщик мусора сборщика андроида
- 25. Сборщик мусора Flash Player
- 26. сборщик мусора не работает
- 27. Сборщик мусора против коллекций
- 28. экземпляр Singleton - сборщик мусора?
- 29. Java-сборщик мусора
- 30. Python, сборщик мусора
Я пробовал оба метода, кажется, он не называется. Можете ли вы привести пример? – user3615971
Вот хороший пример реализации метода 'gc': [здесь] (http://php.net/manual/en/function.session-set-save-handler.php#60316) – WickedYeti
Мне не нужно измените весь процесс обработчика, просто сделайте дополнительный шаг, когда сборщик мусора удалит сеанс. Я хочу сохранить текущую функциональность сохранения в папке. – user3615971