CodeIgniter - ses_destroy () использует много процессора - PullRequest
0 голосов
/ 16 апреля 2011

У меня есть веб-приложение, написанное на CodeIgniter, и по большей части все кажется довольно разумным.Тем не менее, я заметил чрезвычайно высокую загрузку процессора, когда пользователь выходит из системы.Моя функция выхода из системы в моем контроллере аутентификации выглядит следующим образом:

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

Обычно это отлично и быстро.Странно то, что при связывании с с определенной подстраницы эта функция занимает около 5-6 секунд из моего mysqld, работающего со 100% процессором.Как я могу видеть, что он делает и почему?

1 Ответ

2 голосов
/ 16 апреля 2011

Съемка в темноте (если вы уверены, что эта функция вызывает замедление):

Сначала вы можете включить журнал медленных запросов MySQL:

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

Тогда, если $sess_use_database равно TRUE, вы можете попытаться оптимизировать свою таблицу сеансов.Вы можете столкнуться с некоторыми накладными расходами, вызывающими проблемы.

Кроме этого, единственное, о чем я могу думать, - это проблема с вашим сервером БД.Вы можете попробовать запустить 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
            );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...