think-orm icon indicating copy to clipboard operation
think-orm copied to clipboard

求一个数据库主动关闭连接的方法

Open zyuelei opened this issue 5 years ago • 1 comments

场景是这样的,我这有一个命令行的任务,是偶尔会进数据,但是不希望链接一直连着,尤其是一直报has gone away的错误,可能导致数据进不去数据库。开了长连接的配置,但是还是不行。 所以希望有一个主动关闭连接的方法,添加完数据之后把链接都关了

zyuelei avatar Jul 04 '20 07:07 zyuelei

我们刚好遇到了,Connection类底层实现了抽象父类的close方法,在会调用子类PDOConnection做了实现: https://github.com/top-think/think-orm/blob/f48dc09050f25029d41a66bfc9c3c403e4f82024/src/db/PDOConnection.php#L1520

但是Connection并没有开放出一个方法可以调用, 不过它的析构函数里面调用了, 性质一样, 所以可以这样使用: Db::__destruct();

因为不想改底层, 加个方法很简单, 但是怕以后升级不好维护 缺点是以后升级怕官方会在析构函数里面加其他逻辑,不过目前只有close方法,所以暂且先用着,等官方出个方法 https://github.com/top-think/think-orm/blob/f48dc09050f25029d41a66bfc9c3c403e4f82024/src/db/Connection.php#L327

kingfer30 avatar Jan 21 '21 01:01 kingfer30