2016-09-20 111 views
5

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

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

-and这是钩认定中 - >

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); 
    } 

} 

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

回答

4

你的代码看起来很好 - 这不起作用的唯一原因是在你的数据库配置 - 看看@your DB Connection在database.php下application/config/

有一个选项“save_queries”应设置为true

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

谢谢...它的工作.... –

+0

上面的代码现在工作正常......但它的日志记录SELECT查询只,如果我只想INSERT,UPDATE和DELETE记录而不是SELECT查询? –

+0

即使其他类型的查询应该被记录 - 在查询中是所有类型的查询 – sintakonte

0

对于我来说,只是工作时,我定义的配置去$勾阵/ hooks.php。