看到这 , 我觉得大家应该对上面在介绍各个配置选项的代码的时候其中的$r和$m是什么作用了 。
现在我们来看 $r == $m ? false : $db_master , 如果数据库读写不分离的情况下 , 读写是一台服务器的话 传给connect函数的值为false 。或者是如果是主从分离的写的情况下传给connect的值也为false 。通过上面代码我们看到 , 如果$r和$m不相等的情况下 , 会设置$db_master 。其实也就是相当于一台备用的 , 如果选择的$r服务器出现故障不能连接 , 将会去连接$db_master 。
connect()函数的第三个参数其实是表示当$db_config这台服务器连接故障时是否选择备用的连接 。false表示不重连 , 其它值即表示重新连接 。
其核心代码如下try{if(empty($config['dsn'])) {$config['dsn'] =$this->parseDsn($config);}if(version_compare(PHP_VERSION,'5.3.6','<=')){// 禁用模拟预处理语句$this->options[PDO::ATTR_EMULATE_PREPARES] =false;}$this->linkID[$linkNum] = new PDO( $config['dsn'], $config['username'], $config['password'],$this->options);}catch (\PDOException $e) {if($autoConnection){ //$autoConnection不为false , 而是默认的主服务器trace($e->getMessage(),'','ERR');return $this->connect($autoConnection,$linkNum); //出现异常 , 使用递归函数重新连接}elseif($config['debug']){E($e->getMessage());}}
这种方式 , 对于主从式来说 , $r和$m肯定不会相同 。因此如果说在读取数据的时候 , 选择的那台从服务器出现故障的话 , 那主服务器即是备用的 , 最后会去主服务器读取 。能保证数据读取的时效性 。
但是 , 总感觉现在还不太完善 。如果说有多台从服务器 , 在读取的时候选择的那台从服务器和主服务器都出现了故障 , 那数据岂不是就读取失败了 。这时候如果能再次读取其它的从服务器的话那应该是更有保障 。当然了 , 目前的thinkphp的功能已经相当完善 , 足够我们使用了 。但是还是希望thinkphp以后越来越完善 。
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》、《smarty模板入门基础教程》及《PHP模板技术总结》 。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助 。
数据库的发展简史
文章插图
可以参考 PingCAP 的 介绍 , 同事了解下 国内分布式数据库排行榜一的 TiDB.有更多问题 , 可以到 AskTUG 一起讨论 , 多谢 。
数据库技术的国内外发展与应用现状
文章插图
数据库技术是现代信息科学与技术的重要组成部分 , 是计算机数据处理与信息管理系统的核心 。数据库技术研究和解决了计算机信息处理过程中大量数据有效地组织和存储的问题 , 在数据库系统中减少数据存储冗余、实现数据共享、保障数据安全以及高效地检索数据和处理数据 。
随着计算机技术与网络通信技术的发展 , 数据库技术已成为信息社会中对大量数据进行组织与管理的重要技术手段及软件技术 , 是网络信息化管理系统的基础 。本章主要介绍数据库技术的应用与发展、关系模型的基本概念、关系数据库的设计理论及数据库设计方法等内容 , 是学习和掌握现代数据库技术的基础 。
- 国产三段奶粉排行榜前十位,国产奶粉哪个牌子好
- 擦浪嘿哟指的是什么意思
- 国产动画片,怀旧经典国产动画片
- 国产保温杯十大排名,保温杯十大品牌
- 国产区kv,国产什么牌子KTV点歌系统好
- 国产动漫豆瓣高分,推荐几首好听的国产动漫主题曲
- 国产刹车卡钳品牌,刹车卡钳需要更换吗?多久更换呢?
- 国产保温瓶什么品牌好,什么牌子的热水瓶保温
- 国产动漫百合CP,日本动漫里CP和百合什么意思?
- 国产十大恐怖电影,国产十大恐怖片