如果这个问题在我找不到之前就被问到了,我很抱歉。我找不到我想要的答案。
我有一个用Symfony2重建的遗留应用程序,不幸的是,我需要并行运行一段时间,直到我完成整个系统的重建。我需要让symfony能够访问遗留会话数据才能正常工作。
我在Symfony网站上找到了这个:bridge.html bridge.html
但我不明白是否需要进行配置,我应该在哪里调用会话启动,以及如何从我的新应用程序访问会话数据。
我会把在symfony中给出的例子放在我创建的每个控制器中吗?
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;
// legacy application configures session
ini_set('session.save_handler', 'files');
ini_set('session.save_path', '/tmp');
session_start();
// Get Symfony to interface with this existing session
$session = new Session(new PhpBridgeSessionStorage());
// symfony will now interface with the existing PHP session
$session->start();看来应该有办法把它集中起来。
UPDATE手册给出了一个示例,但它没有说明它是否应该在某个控制器、服务、实体或配置中。
我尝试在控制器中使用示例代码,当我在print_r上执行$session时,没有看到任何遗留会话数据。
**
提前谢谢。
发布于 2015-01-26 23:53:46
您所看到的是symfony使用的组件的示例代码。Symfonys会话是从在app/config.yml中设置的参数初始化的。只有在使用symfony之外的组件时,才会使用组件指令。你想要的是第一个。然而,使用:
#app/config.yml
framework:
session:
storage_id: session.storage.php_bridge
handler_id: session.handler.native_file如果在实例化symfony之前正在调用session_start()的其他应用程序中包含symfony,则意味着要使用它。我还没有测试过这一点,但让它们并行运行可能仍然有效,但是您可能最终不得不对会话处理程序进行一些定制。
也许可以考虑使用pdo会话处理程序:storage.html
https://stackoverflow.com/questions/28156165
复制相似问题