我有个问题
session_start()
在主服务器上。当我第一次加载页面时,完成请求需要不到1秒的时间。如果我等待大约12-15秒,然后重新加载页面,加载时间将相同。但是,当我尝试在初始加载后3或5秒刷新页面时,服务器的响应时间等于10秒。
我做了一些测试来定义我的脚本中的瓶颈,我发现,这个函数
SistSuxSistar()
执行9.8秒。我正在使用Pear包http_session2。
下面是代码段:
HTTP_Session2::useCookies(SESSION_USE_COOKIE);
/* Next line was added to make logging of execution time possible. */
self::writeToFile('HTTP_useCookies(1) -> '.self::getWorkTime());
HTTP_Session2::start("SID");
self::writeToFile('HTTP_start(2) -> '.self::getWorkTime());
HTTP_Session2::setExpire(time() + SESSION_EXPIRE);
self::writeToFile('HTTP_setExpire(3) -> '.self::getWorkTime());
日志文本:
//First loading (13:34:35)
HTTP_useCookies(1) -> 0.00038
HTTP_start(2) -> 0.00077
HTTP_setExpire(3) -> 0.00090
// Second loading (13:34:39)(4 seconds later)
HTTP_useCookies(1) -> 0.00029
HTTP_start(2) -> <<<<<< 10.80752 >>>>>
HTTP_setExpire(3) -> <<<<<< 10.80780 >>>>>
//Third loading (13:34:56)
HTTP_useCookies(1) -> 0.00041
HTTP_start(2) -> 0.00071
HTTP_setExpire(3) -> 0.00083
所以我发现问题出在
HTTP_Session2::start()
功能。功能代码
http_session2::start()。
以下内容:
public function start($name = 'SessionID', $id = null)
{
self::name($name);
if (is_null(self::detectID())) {
if ($id) {
self::id($id);
} else {
self::id(uniqid(dechex(rand())));
}
}
session_start();
if (!isset($_SESSION['__HTTP_Session2_Info'])) {
$_SESSION['__HTTP_Session2_Info'] = self::STARTED;
} else {
$_SESSION['__HTTP_Session2_Info'] = self::CONTINUED;
}
}
我不明白什么是造成时间延迟的原因。服务器上可能有错误的Apache设置。或者,可能,对包含会话信息的文件有一些“锁”。
也许,有人已经遇到了这样的问题,可以帮助解决它。