[英]Symfony expired session cleanup (garbage collection)
在運行 PHP 8.1 的 Symfony 5.4 應用程序上,會話的默認配置如下:
# config/packages/framework.yaml
framework:
session:
handler_id: null
cookie_secure: auto
cookie_samesite: lax
storage_factory_id: session.storage.factory.native
依賴原生 PHP session 管理。 在 Debian 系統上,session 文件存儲在/var/lib/php/sessions/
中,過期會話由專用清潔服務(稱為垃圾收集的過程)本地處理。
如果您按照文檔中的說明更改另一個文件夾的save_path
選項,配置將變為:
# config/packages/framework.yaml
framework:
session:
handler_id: 'session.handler.native_file'
save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
cookie_secure: auto
cookie_samesite: lax
storage_factory_id: session.storage.factory.native
現在,垃圾收集不再起作用,目標文件夾中堆積了 session 個文件。 然而,我認為 Symfony 會調用SessionHandler::gc
。
這是不是說Symfony不支持session自己清理?
https://www.php.net/manual/en/session.configuration.php#ini.session.save-path
另請注意,如果使用 N 且大於 0,則不會執行自動垃圾收集,請參閱 php.ini 的副本以獲取更多信息。
我會檢查https://github.com/symfony/symfony/blob/6.3/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.php文件中的$savePath
是否沒有以N
值作為前綴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.