入口文件中开启了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()也不会卡顿?
新开个浏览器打开,或者用隐私模式打开
能从代码层面解决吗?
去掉sleep 40
或者 session_start(['read_and_close' => true]);
这个sleep是为了模拟耗时业务。session_start(['read_and_close' => true]);后我还能对session数据进行读写吗?
可读不可写
现在只知道从执行耗时长的页面的加session_write_close();可以解决
但是还是不够灵活
seesion有锁的,你开了有sleep40,没有释放锁,当然会卡住
session_start后如果确定不修改会话中的数据,我们可以在会话文件读取完毕之后立即关闭它来避免由于给会话文件
加锁导致其他页面阻塞,就是上面我说的session_start(['read_and_close' => true]);
ok,谢谢
session_start(['read_and_close' => true]);
等同于
session_start();
session_write_close();
ok,搞定。三克油