首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迁移到PHP 7后不一致的Memcached PHP会话读取错误

问迁移到PHP 7后不一致的Memcached PHP会话读取错误
EN

Stack Overflow用户
提问于 2019-11-15 11:06:55
回答 1查看 1.1K关注 0票数 0

我们正在将应用程序从PHP5.4迁移到PHP7.3。该应用程序使用memcached存储会话数据,使用AJAX请求显示与会话相关的信息。

代码语言:javascript
复制
  session.save_handler = memcached
  session.save_path = "localhost:11211"

当并发的 AJAX请求试图读取会话时,Memcached行为是不一致的,有些失败导致错误:

代码语言:javascript
复制
session_start(): Failed to read session data: memcached (path: localhost:11211)

在同一页上,当重新加载页面时,相同的AJAX请求可能成功或失败。

当应用程序使用PHP5.4运行时,没有发生这种行为。

如果使用文件会话处理程序(默认值php.ini):

代码语言:javascript
复制
  session.save_handler = files
  session.save_path = "/var/lib/php/sessions"

那么错误就不再发生了,所有的请求都成功了。

禁用会话锁定也解决了以下问题:

代码语言:javascript
复制
  memcached.sess_locking = Off

我不喜欢禁用会话锁定,因为它可能会导致其他并发访问问题。

是否有人有类似的经验或知道出路?提前感谢

PS:以前的配置很好

代码语言:javascript
复制
  Debian 7, PHP 5.4, memcached 2.0.1 and libmemcached 1.0.8

发生错误的新配置:

代码语言:javascript
复制
  Debian 9, PHP 7.3, memcached 3.1.13 and libmemcached 1.0.18.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-18 13:23:04

增加“重试锁定会话锁的次数”可以减少失败次数。

代码语言:javascript
复制
  memcached.sess_lock_retries = 50

默认值为5。

在我的例子中,当错误增加到至少30个时,不会再发生错误。我已经把它设为50,希望它足够了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58875733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档