支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
PHP session的默认行为是,不管session数据是否被发生改变,都会对session持久化(译注:硬盘写入)。在Symfony中,每当session被访问,用来确定session周期和闲置时间的元数据(metadata)都会被记录下来(session的创建/最后被使用的时间)。
如果由于性能原因,你希望限制session持久化的频率,此一功能可以调整元数据更新的间隔,降低session持久化的频率,同时仍然保持相对准确的元数据。如果其他的session数据发生了改变,session将始终持久化。
你可以用一个大于零的秒数来设置 framework.session.metadata_update_threshold
的值,来告诉 Symfony 不要去更新元数据“session last used”(上次被使用)的时间,直到特定时间过去之后(才再次更新)。
1 2 3 | framework:
session:
metadata_update_threshold: 120 |
1 2 3 4 5 6 7 8 9 10 11 12 | <?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:framework="http://symfony.com/schema/dic/symfony"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
<framework:config>
<framework:session metadata-update-threshold="120" />
</framework:config>
</container> |
Note
PHP session的默认行为是,不管session数据是否被发生改变,都会存储session。当使用 framework.session.metadata_update_threshold
时,Symfony 会将 session handler(由 framework.session.handler_id
选项配置)打包到 WriteCheckSessionHandler 中。这可以防止任何未被修改的 session 被写入。
Caution
注意,如果session并非在每一次的请求中被写入,它可能比平时更早地被垃圾回收。这意味着你的用户可能会比预期提前注销。
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。