如何从Redis取消序列化PHP会话?

如何从Redis取消序列化PHP会话?,php,redis,Php,Redis,如何取消存储在Redis中的PHP会话的序列化?我需要从websocket服务器获取会话变量。无法使用会话\u start() unserialize($this->redis->get('PHPREDIS_SESSION:'.$session_id)); 错误 unserialize():319字节的偏移量0处出错 雷迪斯 apt get install php7.0-redis 127.0.0.1:6379> get PHPREDIS_SESSION:tmcls6v5n1

如何取消存储在Redis中的PHP会话的序列化?我需要从websocket服务器获取会话变量。无法使用
会话\u start()

unserialize($this->redis->get('PHPREDIS_SESSION:'.$session_id));
错误

unserialize():319字节的偏移量0处出错

雷迪斯

apt get install php7.0-redis

127.0.0.1:6379> get PHPREDIS_SESSION:tmcls6v5n157q4kva4795hv4j1
"time_user_offset|i:0;activity_time|i:1535643086;ltype|s:6:\"CLIENT\";cid|i:1;uid|i:1;uid_admin|i:1;is_suspended|i:0;is_timeout_time|i:0;is_trial|i:0;is_full|i:1;lid|i:197240;is_ready|i:1;currency_name|s:3:\"DKK\";set_reverse_sign|i:0;bid|i:1;block_name|s:14:\"text\";addon_crm|i:1;suid|i:0;is_supporter|i:0;tmp|i:0;"
php.ini

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
更新
会话在PHP中工作正常,因此它不是一个bug,PHP不使用其标准序列化格式来存储会话。它很相似,但是
取消序列化
不知道如何读取它。如果您使用php.ini中的
session.save\u handler
设置将Redis配置为会话存储,那么它将使用默认的
serialize\u handler
值,并使用该序列化格式存储会话

幸运的是,您仍然可以在PHP中手动解码-您只需要使用。这将使用您传递的数据(本例中是Redis中的字符串)填充
$\u会话
超全局,然后您可以像在任何其他脚本中一样引用它

请注意,如果您回写到服务器B上的会话,它将不会保存回Redis(这可能很明显,但只是以防万一)

服务器A:
PHP不使用其标准序列化格式来存储会话。它很相似,但是
取消序列化
不知道如何读取它。如果您使用php.ini中的
session.save\u handler
设置将Redis配置为会话存储,那么它将使用默认的
serialize\u handler
值,并使用该序列化格式存储会话

幸运的是,您仍然可以在PHP中手动解码-您只需要使用。这将使用您传递的数据(本例中是Redis中的字符串)填充
$\u会话
超全局,然后您可以像在任何其他脚本中一样引用它

请注意,如果您回写到服务器B上的会话,它将不会保存回Redis(这可能很明显,但只是以防万一)

服务器A:
我们不是在30分钟前做了这个问题吗?@riggsfully我们做了,但是评论中的每个人(包括我自己)都没有正确阅读(特别是编辑),正如那个人所说:)我们不是在30分钟前做了这个问题吗?@riggsfully我们做了,但是评论中的每个人(包括我自己)都没有正确阅读(特别是编辑)正如那人所说:)你的解决方案B给出了
bool(true)
ahh
$\u SESSION
获取数据:)是的,
SESSION\u decode
有点烦人-它不返回数据,只是填充会话超全局。但如果这对你有效,那就不是问题了。你的解决方案B给出了
bool(true)
ahh
$\u SESSION
获取数据:)是的,
SESSION\u decode
有点烦人-它不返回数据,只是填充会话超全局。但如果这对你有效,那就没问题了。
<?php
session_start();
$_SESSION['foo'] = 'bar';
<?php
session_start();

$data = $this->redis->get('...');
session_decode($data);

echo $_SESSION['foo']; // bar