本文主要是介绍CLI模式下使用主动重连解决DB断线问题(TP5.0),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
不停运行的循环体,如何重连是个伤心的事,好在TP可以主动重连,可以写一个小插件,几行代码,解决问题
namespace util;
use think\Db;
/*** 数据库主动重连* @package util;* @date 2019-9-16* @author andy3513*/
class ReloadDb {private static $time = null;/*** 检测或执行主动重连* @author andy3513* @param int $timeout 超时时间* @param array $config 连接参数*/public static function init($timeout = 7200,$config = []){$time = time();if(null === self::$time){self::$time = $time;}$exprie = $time - self::$time;if($exprie >= $timeout){ Db::connect($config, true);self::$time = $time;} }
}
使用例子:
可以在循环体或者递归内先进行检测重连即可解决问题
例如:
while(true){\util\ReloadDb::init();//执行重连检测Db::name("table")->limit(100)->select();//数据库操作}
如有问题,欢迎拍砖
注意使用的时候要在循环体内
参数超时时间可根据实际情况进行传入
这篇关于CLI模式下使用主动重连解决DB断线问题(TP5.0)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!