php高并发session会话阻塞性能问题解决办法

php高并发session会话阻塞性能问题解决办法

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%

{{collectdata}}

网友评论0