session_start(): Unable to clear session lock record

php 5.6升级到php 7.0之后memcached session经常出现session_start(): Unable to clear session lock record错误,配套的新版memached配置已经更新,memcached.sess_lock_wait_min=1000,memcached.sess_lock_wait_max=30000,这个问题还是随机性出现,目前有3种解决办法

  1. php7.0.12之后memcached.sess_lock_expire设置一个明确的值,没有亲测,据github网友测试可用。
  2. session_write_close(),不管session的值有没有变化都要session_write_close(),没有亲测。一般session用的都是框架(我用的ZF1),这种方法不是很优美。
  3. php7之后增加了一个新的session配置session.lazy_write,这个默认是true,设置成false解决问题,亲测。
    if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
        ini_set('session.lazy_write', 0);
    }

     

参考:

https://github.com/php-memcached-dev/php-memcached/issues/269

发表评论

电子邮件地址不会被公开。

*