php - session_start 似乎很慢(但只是有时)

标签 php apache session debian fastcgi

出于某种奇怪的原因,就在今天,我们的服务器决定在 session 开始期间非常慢。对于每个 session_start,服务器要么在 30 秒后超时,要么需要大约 20 秒才能启动 session 。这很奇怪,因为它已经很长时间没有这样做了(我们的服务器上一次这样做是在大约 7 个月前)。我尝试将 session 更改为通过数据库运行,并且效果很好,但是,随着我们当前的网站的构建,每个页面都需要几天时间并更改 session 的加载以包含新 session 处理程序。因此我的问题仍然存在:

为什么这么慢,为什么只是有时?

我们在具有 24GB 内存的专用 hetzner 服务器上运行,CPU 速度快到足以运行一个简单的网络服务器(我相信是 Xeon,但我不确定)。我们使用 apache+fastcgi+php5 设置在服务器上运行 debian。

服务器不会报告太多负载,无论是通过 server-status 还是 top 命令。 Vnstat 报告我们的网络链接没有任何问题(同样,这不会导致本地 session 处理缓慢)。 IOtop 报告进程接管整个硬盘驱动器没有问题。如果通过 vim 完成,写入 session 文件所在的 tmp 文件夹会很快。

再次说明,我主要关心的不是我们是否应该切换到数据库或内存缓存版本的 session ,只是想问为什么会发生这种情况,因为我看的所有内容at 似乎工作正常,除了 PHP 本身。

编辑: 我们的 PHP tmp 目录中的最大文件是 2.9 MB,所以我相信不会有任何影响。

更新:我从来没有弄清楚出了什么问题和/或如何解决它,但是在我们切换到 memcached/db session 后问题就消失了。

最佳答案

你试过 session_write_close(); 吗? 这将禁用 session 变量中的可写能力,但您仍然可以从中读取数据。稍后当您需要编写 session 变量时,请重新打开它。

我也遇到过这个问题,但这件事就像一个魅力。这就是我所做的:

session_start(); //starts the session
$_SESSION['user']="Me";
session_write_close();   // close write capability
echo $_SESSION['user']; // you can still access it

关于php - session_start 似乎很慢(但只是有时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10385582/

相关文章:

apache - 如何将所有页面重定向到根目录,而不影响css文件?

Spring MVC : HTTP session management "equivalent"

php - 跨子域的 session 不起作用

session Cookie 从未在 asp.net core 中设置

php - mysql中打印表后导出为csv

找不到 php.ini 文件?

apache - reducer 失败

php - curl_exec 从 Paypal REST Api 返回一个 XMLFault

php 在我的时区获取日期

PHP 脚本在 foreach 循环期间退出而没有错误,通过 echo long strings 解决