楠神也是今天才发觉这样的问题。第14章18节,楠神曾建议大家让自定义的模型类继承Query类,包括我目前开发的BBS系统就是这样做的。
可今天才发现,有一个小错误。虽然对数据库增删查改没有问题,但会出现不好的现象,看这样的代码:
model("User")->find(1);
model("User")->find(2);
model("Forum")->find();
model("Nav")->find();
我执行了这样四行代码,当我看了下TP框架生成的log文件:
发现model()函数里的模型名称不对就会重新打开一个连接,这样是万万不可以的,会极大提高mysql请求量,降低mysql并发处理能力。而且操作多张表时,开启事务无效。楠神就是通过开启事务不管用才发现的这个问题。
怎么去改动呢?
把Query类的构造函数继承下来,并修改下Db::connect([], true);的参数:
这样就可以了。