Mysql
 sql >> Base de données >  >> RDS >> Mysql

CodeIgniter - ses_destroy() utilise BEAUCOUP de CPU

Prendre une photo dans l'obscurité (si vous êtes sûr que cette fonction est à l'origine de la lenteur) :

Tout d'abord, vous pouvez activer le journal des requêtes lentes de MySQL :

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

Ensuite, si $sess_use_database est TRUE vous pouvez essayer d'optimiser votre table de session. Vous pourriez avoir des frais généraux causant des problèmes.

En dehors de cela, la seule autre chose à laquelle je peux penser est qu'il y a un problème avec votre serveur de base de données. Vous pouvez essayer d'exécuter MySQL Tuner pour voir si vous pouvez améliorer un peu les choses :

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

J'espère que ça aide !

Pour info

Voici le code qui est exécuté lorsque l'OP exécute sess_destroy() (à partir de la 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
            );
}