第十五章:有关TP框架发现一个重要的问题

更新于:2018-12-21 21:12:39

楠神也是今天才发觉这样的问题。第14章18节,楠神曾建议大家让自定义的模型类继承Query类,包括我目前开发的BBS系统就是这样做的。


1.png


可今天才发现,有一个小错误。虽然对数据库增删查改没有问题,但会出现不好的现象,看这样的代码:


model("User")->find(1);

model("User")->find(2);

model("Forum")->find();

model("Nav")->find();


我执行了这样四行代码,当我看了下TP框架生成的log文件:

1.png


发现model()函数里的模型名称不对就会重新打开一个连接,这样是万万不可以的,会极大提高mysql请求量,降低mysql并发处理能力。而且操作多张表时,开启事务无效。楠神就是通过开启事务不管用才发现的这个问题。


怎么去改动呢?


1.png


把Query类的构造函数继承下来,并修改下Db::connect([], true);的参数:


1.png


这样就可以了。


拓展阅读:《PHP实际应用中mysql出现“锁等待”实际问题分析研究》