gpt4 book ai didi

mysql - CodeIgniter - ses_destroy() 使用大量 CPU

转载 作者:行者123 更新时间:2023-11-29 09:10:38 25 4
gpt4 key购买 nike

我有一个用 CodeIgniter 编写的 Web 应用程序,大多数情况下一切看起来都相当合理。但是,我注意到当用户注销时 CPU 使用率极高。我的身份验证 Controller 中的注销功能如下:

function logout()
{
$goto = $SERVER['HTTP-REFERER'];
$this->session->sess_destroy();
if (!$goto)
$goto = "/";
header('location: '.$goto);
}

通常情况下,这是非常好的和快速的。奇怪的是,当链接到从特定子页面时,这个函数大约需要 5-6 秒,mysqld 以 100% cpu 运行。我怎样才能看到它在做什么,为什么?

最佳答案

在黑暗中拍摄(如果您确定此功能导致速度缓慢):

首先,你可以打开MySQL的慢查询日志:

http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

然后,如果 $sess_use_databaseTRUE,您可以尝试优化 session 表。您可能会产生一些导致问题的开销。

除此之外,我唯一能想到的就是您的数据库服务器存在问题。您可以尝试运行 MySQL Tuner,看看是否可以稍微改进一下:

https://github.com/rackerhacker/MySQLTuner-perl

希望有帮助!

仅供引用

以下是 OP 运行 sess_destroy() 时运行的代码(从 v2.0.2 开始):

/**
* Destroy the current session
*
* @access public
* @return void
*/
function sess_destroy()
{
// Kill the session DB row
if ($this->sess_use_database === TRUE AND isset($this->userdata['session_id']))
{
$this->CI->db->where('session_id', $this->userdata['session_id']);
$this->CI->db->delete($this->sess_table_name);
}

// Kill the cookie
setcookie(
$this->sess_cookie_name,
addslashes(serialize(array())),
($this->now - 31500000),
$this->cookie_path,
$this->cookie_domain,
0
);
}

关于mysql - CodeIgniter - ses_destroy() 使用大量 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5688995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com