欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
Windows IIS环境配置CodeIgniter 4 的网站环境 CodeIgniter4 分页器增加输入框输入页码后跳转的功能
多云  给 CodeIgniter 4 增加SQL执行数量的统计功能
[ 发布日期:1年前 (2023-11-14) ]   [ 来自:本站原创 ] [分类:其它运维与编程]

打开CodeIgniter 4 的默认首页,可以在页面底部看到页面执行时间的统计。
因为之前的老asp博客系统中有SQL执行数的统计功能,所以打算给新系统也实现这个功能。

先查看CodeIgniter 4 的框架代码和模版代码分析一下 时间统计功能的实现。
首先查看view目录中的模版文件,可以看到模版[welcome_message.php]中显示时间的代码如下:
[复制到剪贴板]

<p>Page rendered in {elapsed_timeseconds</p


可以看出来是定义了一个宏变量 {elapsed_time} 
这样在框架系统中应该会有处理该变量的逻辑。


在框架系统的文件中搜索该变量名称,可以发现该变量在文件 system/CodeIgniter.php中处理,代码如下:
[复制到剪贴板]


/**
     * Replaces the elapsed_time tag.
     */
    
public function displayPerformanceMetrics(string $output): string
    
{
        return 
str_replace('{elapsed_time}', (string) $this->totalTime$output);
    }
 




先模仿上面的功能来实现,为了简单,这里也只修改一个文件  system/CodeIgniter.php


首先在文件中增加一个变量和一个函数[b]
[复制到剪贴板]

/**
     * SQLQueryNums.
     *
     * @var int|null
     */
    
protected $sql_queries 0;
/**
     * 统计SQL执行次数   
     */ 
    
public function collectDBQuery($query){
        
$this->sql_queries++;
    } 



[b]然后修改启动函数,注册事件:

[复制到剪贴板]


public function run(?RouteCollectionInterface $routes nullbool $returnResponse false)
    {
//增加 事件注册代码
Events::on('DBQuery', [$this'collectDBQuery']); 


最后修改宏处理代码,进行宏的变量值替换
[复制到剪贴板]


/**
     * Replaces the elapsed_time tag.
     */
    
public function displayPerformanceMetrics(string $output): string
    
{
        
$output str_replace('{sql_queries}'$this->sql_queries$output);
        return 
str_replace('{elapsed_time}', (string) $this->totalTime$output);
    }
 




新增加的宏代码为 {sql_queries},只要将这个宏放置到模版文件中即可。

引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/260
复制引用地址https://www.rickw.cn/trackback/260/GBK
[ 分类:其它运维与编程  | 查看:460 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2024 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5