感谢你来到这里
我真的很激动
盼望,能有你的支持
捐赠可扫描二维码转账支付
支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
默认情况下,symfony标准版使用php.ini
的全局的session.save_handler
和session.save_path
值来决定session数据存储在哪里?这是因为下面的配置所致:
1 2 3 4 5 | # app/config/config.yml
framework:
session:
# handler_id set to null will use default session handler from php.ini
handler_id: ~ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!-- app/config/config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
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>
<!-- handler-id set to null will use default session handler from php.ini -->
<framework:session handler-id="null" />
</framework:config>
</container> |
在这个配置中,改变您的Session元数据的存储位置完全取决于您的php.ini
配置。
然而,如果你有下面的配置,symfony将保存session数据到缓存目录%kernel.cache_dir%/sessions
中的文件夹里。这意味着当你清空这个缓存,所有的当前session也将被删除了:
1 2 3 | # app/config/config.yml
framework:
session: ~ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!-- app/config/config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
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 />
</framework:config>
</container> |
使用另一个目录来保存session数据是一个方法,他能确保当你清除symfony缓存时你当前的session不会丢失。
使用不同的session保存操作在symfony的session管理中是很好的(也更复杂)方法。到“ Configuring Sessions and Save Handlers”看看session保存操作的详述。这里还有几篇文章是讲解如何存储session到关系型数据库或者NoSQL数据库
改变 Symfony 存储session数据的目录,你只需要改变框架配置(framework configuration)。在这个例子中,你可以改变session目录为app/sessions
:
1 2 3 4 5 | # app/config/config.yml
framework:
session:
handler_id: session.handler.native_file
save_path: '%kernel.root_dir%/sessions' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!-- app/config/config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
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 handler-id="session.handler.native_file"
save-path="%kernel.root_dir%/sessions"
/>
</framework:config>
</container> |
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。