CodeIgniter作为轻量化的PHP框架
db物件一直是操作资料库的好帮手
简化了下达sql指令时的操作
加快了开发的速度
$this->db
作为一个操作资料库的物件
有两个官方文档中几乎没有提到的参数:
$this->db->queries
与 $this->db->query_times
这个功能其实是CodeIgniter提供给开发者查询sql指令纪录与执行时间的功能
可以看到每个sql语法花费的实际时间
直接看Code:
$times = $this->db->query_times;
foreach ($this->db->queries as $key => $query)
{
$microsec = round($times[$key] * 1000, 4);
echo '[' . $microsec . ' microseconds] ' . $query . '<br>';
}
执行结果:
从执行结果可以清楚的了解每个sql语法花费了多久的时间进行查询
帮助开发人员进行效能优化
执行的所有语法都存在这个变数里面,是不是很方便阿~
这个功能在CodeIgniter里是预设开启的
所以当今天需要进行大量的sql查询时
这个功能就会默默地吃掉记忆体
甚至导致out of memory错误
如果没有特别需要的话
可以在资料库设定加上 'save_queries' => FALSE
如下:
$db['default'] = array(
'dsn' => '',
'hostname' => '',
'username' => '',
'password' => '',
'database' => '',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => FALSE,
'port' => 3306,
);
或是在执行大量查询前
先使用:
$this->db->save_queries = FALSE;
来避免log纪录吃掉大量记忆体的状况
我们都知道使用框架非常方便
可以省去很多重复的功夫
以CodeIgniter中的db物件来说
最大的帮助就是减少了每次都要防范SQL injection功夫
还有串接SQL语法的麻烦
但是框架最大的隐患就是
使用它提供的「方便」
但却不知道他到底做了什麽事情
想想一个问题:
你在使用这些方便的工具生成SQL语法时
真的知道它实际上执行的SQL语句长甚麽样子吗?
会不会程序效率很差的原因就出在框架?
这篇并不是鼓励大家不使用框架
而是想告诉大家:不要过度依赖任何工具
真的清楚你做了甚麽事情
才不会哪一天被自己给坑了
<<: Day22:安全性和演算法-公开金钥密码系统(Public-key Cryptosystem)
>>: Day22:[排序演算法]Merge sort - 合并排序法
InnoDB将索引分成Cluster Index & Secondary Index,认识...
使用 docker 安装 Wordpress 这个相当热门的 CMP 内容管理平台,可以省去不少过往...
接下来我们来谈谈 MVP ( Model-View-Presenter ),在知道 MVC 也只是在...
今天发烧用手机打字 後面明天一定补完QQ 明天是不是该想想要做什麽mysql小projectㄌ.....
常见的非同步问题(不限於 AJAX) 回呼地狱 写法不一致 无法同时执行(jQuery有并行语法,但...