php高并发session会话阻塞性能问题解决办法
php默认的session处理方式是session_start开启后,会打开一个session会话文件并且锁住,当脚本运行结束后才写入session文件并释放锁,那么在高并发请求的时候会出现阻塞及性能问题,如果单个用户需要同时访问同一个php文件时,php脚本会在session开始后阻塞住,其他请求会一直停在那等到前面一个脚本结束并且释放锁,这样就回出现问题,那么如何解决这个问题呢
使用session_write_close,这样在session用完后立即写入并释放。
<?php session_start(); $_SESSION["key"]="value"; session_write_close(); ?>
还有一种情况,就是用户执行session读操作时候,无需锁住文件并写入,这个时候要判断session值有没有改变,改变就重新写入,还有就是同一脚本中多处用到session,频繁的读取session也会有性能问题,我们可以设置session缓存,完整代码如下
<?php 自定义session处理类 class CustomSessionHandler { private $savePath; private static $_sessval = null; private static $_sessiswrite = false; //创建session存储目录 function open($savePath, $sessionName) { $this->savePath = $savePath; if (!is_dir($this->saveP...
点击查看剩余70%
网友评论0