刚接触ThinkPHP时,觉得很新鲜,但做项目使用thinkphp后速度很慢,慢如龟速,有时在想国产的框架用的人那么多,怎么会这么慢,PHP不该这么运行慢的。
经过多方查找,发现了个规律,只要是在PHP5.3环境下的PHP都运行很慢,这与PHP版本有关?经测试发现问题。
PHP遇到了执行效率问题,经测试和排查跟编译版本和mysqlnd关系并不大,解决方法还是需要从代码本身入手。
ipv4和ipv6同时启用的冲突
将PHP连接数据库语句中的代码直接用IP表示:
$dbhost = 'localhost'
改为:
$dbhost = '127.0.0.1'
在ThinkPHP中,连接数据库的代码:
'DB_HOST' => 'localhost', //数据库主机
改为:
'DB_HOST' => '127.0.0.1', //数据库主机
如果同时开启了ipv6和ipv4,并且解析到了localhost这个关键字上,会产生冲突。在代码配置里改一改会解决数据库连接卡的问题。
隐形BUG多,PHP主版本<7且有大量的Notice错误没有排除
一般来说, 小伙伴们在拿php写东西,难免会遇到一些小错误,例如找不到数组对应的键值之类的。而php的特性是比较皮实的,不会因为这点问题就崩掉。Thinkphp3.x默认会把错误写在日志文件里,这样外面的人看不到原本斑驳的错误了,很开心。
因此,需要找出项目文件夹中runtime/log子目录里面的日志文件,搜索Notice关键字。随着访问日志/测试强度的增加,你有可能会找到许多notice错误提示。
例如:undefined offset报错,数组下标找不到;该用isset()函数做判断的地方没有判断……等等问题。根据这些notice错误提示来摸索,依此排除掉这些错误,而不要忽略这些报错,是使用Thinkphp这类框架提高访问速度的最佳办法。
重构代码, 将PHP3升为PHP5
如果App逻辑代码不是很多很复杂的话, 当然是升一下框架。业务代码多那就算了。