我有一个基于 Symfony 框架构建的网站,我不得不添加一个直接在 web 目录中启动的遗留 php 脚本。
我还必须在 Symfony 框架 Controller 和独立的 php 脚本之间共享 session 数据。
我的服务器和 Symfony 框架上的 session 被配置为在 memcached 服务器 (127.0.0.1 11211) 中。
这是我的 Symfony 配置文件:
参数.yml
session_memcached_host: 127.0.0.1
session_memcached_port: 11211
session_memcached_prefix: 'BPY_'
session_memcached_expire: 3600
配置.yml
imports:
- { resource: session.yml }
...
session:
handler_id: session.handler.memcached
session .yml
services:
session.memcached:
class: Memcache
arguments:
persistent_id: %session_memcached_prefix%
calls:
- [ addServer, [ %session_memcached_host%, %session_memcached_port% ]]
session.handler.memcached:
class: Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcacheSessionHandler
arguments: [@session.memcached, { prefix: %session_memcached_prefix%, expiretime: %session_memcached_expire% }]
Symfony Controller 中的 session 设置和读取使用:
$request->getSession->get('key');
$request->getSession->set('key', $value);
在单机老php脚本中,我使用的是全局session数组来设置和获取数据。理论上,为了让 Symfony 和我的脚本共享数据,我设置并获取数据:
$_SESSION['_sf2_attributes']
所以,最后有了这个配置,当我在 symfony Controller 中设置数据时,我在独立的 php 脚本中看不到它,当我在 php 脚本中设置数据时,我在 Symfony Controller 中看不到它。
我的配置或代码有什么问题?
最佳答案
你应该检查 Bridge a legacy Application with Symfony Sessions 但总的来说,您可以通过以下方式配置它:
framework:
session:
storage_id: session.storage.php_bridge
handler_id: ~
关于php - 如何在 Symfony Controller 和在内存缓存中管理 session 的经典独立 php 脚本之间共享 session 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30462209/