感谢你来到这里
我真的很激动
盼望,能有你的支持
捐赠可扫描二维码转账支付
支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
如果你整合symfony完整框架到一个遗留的应用程序,他使用的是session_start()
启动session,你仍然可以使用Symfony的session管理,但需要通过php桥接session(PHP Bridge session)。
假如应用程序有他自己的php保存操作(save handler),你可以指定handler_id
为空:
1 2 3 4 | framework:
session:
storage_id: session.storage.php_bridge
handler_id: ~ |
1 2 3 4 5 6 7 8 9 10 | <?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:framework="http://symfony.com/schema/dic/symfony">
<framework:config>
<framework:session storage-id="session.storage.php_bridge"
handler-id="null"
/>
</framework:config>
</container> |
另外,如果问题是您不能消除让应用程序以 session_start()
启动session,您仍然可以使用基于Symfony的session保存操作,只不过你需要指定这个保存操作(handler_id
),就像下面一样:
1 2 3 4 | framework:
session:
storage_id: session.storage.php_bridge
handler_id: session.handler.native_file |
1 2 3 4 5 6 7 8 9 10 | <?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:framework="http://symfony.com/schema/dic/symfony">
<framework:config>
<framework:session storage-id="session.storage.php_bridge"
handler-id="session.storage.native_file"
/>
</framework:config>
</container> |
如果这个遗留的应用程序需要自己的Session保存操作(session save handler),请不要重写它。设置handler_id: ~
来替代即可。请注意,一旦Session被启用,Session保存操作将不能被更改。如果应用程序在symfoy初始化之前启动session,保存操作就已经准备好了。在这种情况下,您将需要handler_id:~
。只有在你确定遗留应用程序可以使用symfony保存操作无副作用时并且symfony初始化之前session不能被启动时,才可以重写保存操作(session save handler)。
更多信息请查看,整合传统Session
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。