ホームページ  >  に質問  >  本文

PHP自定义redis-session能否用hash类型

最近把代码迁移到分布式服务器,用session_set_save_handler()函数注册了自定义的会话存储函数。php脚本执行结束时就会把$_SESSION数组中的内容进行序列化并保存到由session_id指定的key中,是string类型。

后来觉得这样会出现并发问题,例如两个脚本同时去修改$_SESSION数组。PHP默认是用文件来保存session数据的,会加锁,所以不会出现这样的问题。

后来就想到用hash类型来保存session,似乎很perfect。session的write函数每次拿到$data变量的内容都要反序列化得到原本的结构,并保存到hash中。但后来想到如果$_SESSION数组中某个key对应的value不是string类型,那也是会出问题。

后来也觉得write函数每次这样去反序列化也是很麻烦。虽然得知是可以修改PHP的session编码方式,但是wirte函数接收的$data参数只能是string,然并卵。

各位朋友,怎么样可以既解决并发问题,又可以用最适合的redis类型去存放session呢?求建议!谢谢!

PHP中文网PHP中文网2728日前322

全員に返信(1)返信します

  • 黄舟

    黄舟2017-04-11 09:01:49

    我的问题session

    并发问题的话,操作之前加个锁

    返事
    0
  • キャンセル返事