原创日志

关于php高并发下的session_start()超时 和 session_write_close()

[ 2022-03-11 10:07:36 | 作者: admin ]
字号: | |
今天发现php-fpm有慢语句 session_start()
网上认为是相同浏览器访问相同网站,不同的tab会出现这个问题。
锁了session写入但是能读取。

网上解决方法
在写入完session后立即执行掉 session_write_close()
也就是保存当前session,然后解除锁定。


推论:
此站没有用文件保存session,而是使用了memcached,同样涉及到session锁死的问题
不过高并发下才出现可能是memcached设置的并发量不够
就把原来的1024直接改为4096,运行一段时间看负载情况


另外session赋值结束可以使用 session_commit() ,避免php页执行时间长导致session锁死
下面的例子可以演示 一个调用session的php运行如果没有结束,其它php运行就会一直等待下去,从而php-fpm超时

session-test-1.php
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
         <body>
                <?php
                session_start();
                $_SESSION["message"]="我留下的脚印";
                // session_commit();
                sleep(20);
                ?>
                休息了20秒钟...
         </body>
</html>





session-test-2.php
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
       <?php
                session_start();
                //session_commit(); //别担心,session_commit()以后,$_SESSION数组的内容还在.
                echo $_SESSION["message"]."<br/>";
       ?>
       我等到花儿也谢了
</body>
</html>







参考:https://bbs.csdn.net/topics/370189402
[最后修改由 admin, 于 2022-04-28 14:39:30]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2832

这篇日志没有评论。

此日志不可发表评论。