Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Symfony控制器和经典的独立php脚本之间共享会话数据,其中会话在memcache中管理?_Php_Symfony_Session_Memcached_Share - Fatal编程技术网

如何在Symfony控制器和经典的独立php脚本之间共享会话数据,其中会话在memcache中管理?

如何在Symfony控制器和经典的独立php脚本之间共享会话数据,其中会话在memcache中管理?,php,symfony,session,memcached,share,Php,Symfony,Session,Memcached,Share,我有一个基于Symfony框架的网站,我不得不添加一个直接在web目录中启动的遗留php脚本 我还必须在Symfony框架控制器和独立php脚本之间共享会话数据 我的服务器和Symfony框架上的会话配置为在memcached服务器中(127.0.0.1 11211) 以下是我的Symfony配置文件: 参数.yml session_memcached_host: 127.0.0.1 session_memcached_port: 11211 session_memcached_prefix:

我有一个基于Symfony框架的网站,我不得不添加一个直接在web目录中启动的遗留php脚本

我还必须在Symfony框架控制器和独立php脚本之间共享会话数据

我的服务器和Symfony框架上的会话配置为在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
config.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控制器中的会话通过以下方式设置和读取:

$request->getSession->get('key');
$request->getSession->set('key', $value);
在独立的旧php脚本中,我使用全局会话数组来设置和获取数据。理论上,为了让Symfony和我的脚本共享我设置并获取的数据:

$_SESSION['_sf2_attributes']
因此,最后,在这个配置中,当我在symfony控制器中设置数据时,我在独立的php脚本中看不到它,当我在php脚本中设置数据时,我在symfony控制器中看不到它

我的配置或代码有什么问题?

您应该检查 但总体而言,您可以通过以下方式进行配置:

framework:
  session:
    storage_id: session.storage.php_bridge
    handler_id: ~

我终于解决了这个问题

在parameters.yml文件中,我将:

session_memcached_prefix : ''
而不是:

session_memcached_prefix : 'BPY_'
两个环境可以共享会话数据

在Symfony控制器中,我仍然使用

$request->getSession->get('key');
$request->getSession->set('key', $value);
在独立php脚本中,我在这个数组中使用set和get数据:

$_SESSION['_sf2_attributes']
所以

$_SESSION['_sf2_attributes']['key'] = $value