会话存储位置

本主题讨论如何定位会话文件的存储位置。 系统使用以下逻辑来存储会话文件:

  • 如果配置了memcached,则会话存储在RAM中;请参阅将memcached用于会话存储

  • 如果配置了Redis,则会话存储在Redis服务器上;请参阅将Redis用于会话存储

  • 如果您使用的是默认的基于文件的会话存储,则会按照显示的顺序将会话存储在以下位置:

    1. env.php中定义的目录
    2. php.ini中定义的目录
    3. <magento_root>/var/session目录

env.php中的示例

<magento_root>/app/etc/env.php中的示例代码片段如下所示:

 'session' => [
     'save' => 'files',
     'save_path' => '/var/www/session'
 ],

上述示例将会话文件存储在/var/www/session

php.ini中的示例

作为具有root权限的用户,打开您的php.ini文件并搜索session.save_path的值。 这标识了会话的存储位置。

管理会话大小

请参阅​ 用户指南 ​中的会话管理

垃圾收集配置

为了清理过期的会话,系统根据gc_probability / gc_divisor指令计算的概率随机调用gc垃圾回收)处理程序。 例如,如果分别将这些指令设置为1/100,则表示1%的概率(每100个请求一个垃圾收集调用的概率​__)。

垃圾收集处理程序使用gc_maxlifetime指令,即会话被视为​ 垃圾桶 ​并可能被清理的秒数。

在某些操作系统(Debian/Ubuntu)上,默认session.gc_probability指令为0,该指令可阻止垃圾收集处理程序运行。

您可以覆盖<magento_root>/app/etc/env.php文件中php.ini文件中的session.gc_指令:

 'session' => [
     'save' => 'db',
     'gc_probability' => 1,
     'gc_divisor' => 1000,
     'gc_maxlifetime' => 1440
 ],

根据流量和商户网站的特定需求,配置会有所不同。

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c