在codeigniter中执行后记录所有查询

时间:2016-09-20 07:17:52

标签: codeigniter

我想在使用hooks执行后记录所有查询。 -i启用了config.php中的挂钩 - 这是我的钩子 - >

 $hook['post_controller'] = array(    
    'class' => 'Db_log',             
    'function' => 'logQueries',     
   'filename' => 'db_log.php',    
   'filepath' => 'hooks'         
  );

- 这是钩子定义 - >

class Db_log 
{

    function __construct() 
    {
    }


    function logQueries() 
    {
        $CI = & get_instance();

        $filepath = APPPATH . 'logs/Query-log-' . date('Y-m-d') . '.php'; 
        $handle = fopen($filepath, "a+");                        

        $times = $CI->db->query_times;
        foreach ($CI->db->queries as $key => $query) 
        { 
            $sql = $query . " \n Execution Time:" . $times[$key]; 

            fwrite($handle, $sql . "\n\n");    
        }

        fclose($handle);  
    }

}

- 创建query_log文件 - 但没有存储查询的记录

2 个答案:

答案 0 :(得分:10)

你的代码看起来很好 - 这是因为你的数据库配置不起作用的唯一原因 - 在application / config /

下的database.php中查看@your DB Connection

有一个选项" save_queries"应该设置为true

$db['default'] = array(
    ...
    'save_queries' => TRUE
);

答案 1 :(得分:0)

对我来说,只有在config / hooks.php中定义de $ hook数组时才有效。