簡體   English   中英

Symfony 過期 session 清理(垃圾收集)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM