关于php-fpm session卡顿的问题(已解决)

jie365@126.com

入口文件中开启了session
session_start();

我在浏览器中访问了第一个页面/test/page/a,在这个页面中sleep(40);

此时在浏览器开第二个页面/test/page/b,这个页面正常情况下打开速度很快。但是因为访问/test/page/a页面,占用了sesison,导致第二个页面session_start()非常慢。

请教各位大咖,这个问题如何优化?
怎么样做到无论访问的/test/page/a页面有多慢,访问test/page/b页面session_start()也不会卡顿?

1058 2 0
2个回答

nitron

新开个浏览器打开,或者用隐私模式打开

  • jie365@126.com 2022-03-03

    能从代码层面解决吗?

  • nitron 2022-03-03

    去掉sleep 40

  • nitron 2022-03-03

    或者 session_start(['read_and_close' => true]);

  • jie365@126.com 2022-03-03

    这个sleep是为了模拟耗时业务。session_start(['read_and_close' => true]);后我还能对session数据进行读写吗?

  • nitron 2022-03-03

    可读不可写

jie365@126.com

现在只知道从执行耗时长的页面的加session_write_close();可以解决

但是还是不够灵活

  • nitron 2022-03-03

    seesion有锁的,你开了有sleep40,没有释放锁,当然会卡住
    session_start后如果确定不修改会话中的数据,我们可以在会话文件读取完毕之后立即关闭它来避免由于给会话文件
    加锁导致其他页面阻塞,就是上面我说的session_start(['read_and_close' => true]);

  • jie365@126.com 2022-03-03

    ok,谢谢

  • nitron 2022-03-03

    session_start(['read_and_close' => true]);
    等同于
    session_start();
    session_write_close();

  • jie365@126.com 2022-03-03

    ok,搞定。三克油

年代过于久远,无法发表回答
🔝