修改Codeigniter探查器以将输出发送到db而不是在页面上显示

时间:2011-11-15 14:36:28

标签: codeigniter profiler

我想使用CI Profiler作为审核应用的工具。但是,显然在这种情况下,我不希望输出显示在页面上,而是记录到数据库。

我以为我可以挂钩到探查器中获取相关细节(查询,uri_string等)并将其发送到db中的表。

我可以扩展探查器类以将数据发送到数据库,但这并不会消除屏幕输出。我希望能够不时地正常使用分析器,因此不希望重写输出类。

任何想法都赞赏。


我最终做的是创建一个库和copylasagna Profiler.php进行修改,以便根据需要进行修改。

2 个答案:

答案 0 :(得分:7)

试试这个。将MY_Profiler.php添加到 libraries / 目录(我假设您在2.0+分支;如果没有,请知道):

<?php
class MY_Profiler extends CI_Profiler {
    public function run()
    {
        $output = parent::run();
        // log output here, and optionally return it if you do want it to display
    }
}

编辑:并自动为每个控制器启用探查器(添加到core / MY_Controller.php):

<?php
class MY_Controller extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        $this->output->enable_profiler(TRUE);
    }
}
// but each controller will have to extend MY_Controller, not CI_Controller...
class Somecontroller extends MY_Controller { //... }

答案 1 :(得分:-1)

您可以破解core/OutputProfiler类输出保存到数据库,或在屏幕上显示,或两者都显示。只需添加另一个类似于$this->enable_profiler;

的开关

您可能还想查看xdebug。它允许您分析应用程序,将配置文件写入磁盘,并在以后使用工具进行检查。