logo    奶牛CMS内容管理系统    最灵活的企业级免费开源电子商务系统软件!
首页 > 新闻列表 > ThinkPHP 3.2、5.0 性能优化与跟踪(一):字段缓存

ThinkPHP 3.2、5.0 性能优化与跟踪(一):字段缓存

一、缘起

最近接手了一个系统的开发维护,属于逻辑简单,并发访问量非常大的。所以,把重点放在了跟踪、提升性能上面。

二、性能跟踪

在优化性能之前,首先要跟踪性能指标,比如说,MySQL的各项性能如何?PHP-cgi进程的性能如何?

对于windows服务器,我们可以用系统自带的perfmon性能监视器,这个工具更加详细的,可以查看这篇文章http://blog.csdn.net/oscar999/article/details/7918385

通过监测分析,初步判定:MySQL性能消耗非常多,PHP-cgi 并发多,不过IO操作并不多。

再加上打开配置文件:debug.php里面的SQL语句跟踪,哎呦妈呀,里面有很多的:SHOW COLUMNS FROM……语句,这不是Model的字段读取太频繁了吗?

第三、初步优化措施

综合以上两点观测,就找到了其中一个优化要点了:减少MySQL操作,可以适当增加IO操作。

符合这个优化点的特性,首先就是查看debug.php文件,找到里面的DB_FIELDS_CACHE,把 它从false修改成true

  1. 'DB_FIELDS_CACHE'=>     true

复制代码

注意:在调试模式下,以上设置不会生效,所以要去找到你的入口文件(默认index.php),修改它的APP_DEBUG设置。

  1. define('APP_DEBUG',false);

复制代码

第四、处理结果

就是这个简单的设置,跟踪了MySQL性能,居然提升了3-5倍,当然了,PHP-cgi的IO操作就增加了一些。

第五、更进一步的研究处理

进一步来讲,如果PHP-cgi的IO读取性能也需要进一步降低,那么必须自己为每个Model类定义好 $fields和$pk了。

具体的文章,请参考《ThinkPHP 3.2完全手册》:http://document.thinkphp.cn/manual_3_2.html#define_fields

另外,因为启用了字段缓存'DB_FIELDS_CACHE'=>true,那么tp会生成一些字段缓存文件,你可以在Runtime/Data/_fields/目录(这是默认,可以修改这个目录)下找到它们,如果以后数据表字段有变化,可以把这个表的字段缓存文件删除了,让这个表的字段缓存重新生成。

联系我们
点击这里给我发消息
点击这里给我发消息
联系我们