支持多主机的单一实例MYSQL类
2014-04-27 12:35
399 查看
2014年4月27日 12:34:08
概述:
一次请求(或执行一次PHP交互),如果只连接了一个主机上的MYSQL数据库那么该MYSQL类就只生成一个对应的实例;
如果一次请求需要连接了不同机器上的MYSQL数据库,那么该MYSQL类就会生成多个实例,其中每一个实例对应一台机器;
这些实例用静态数组变量$instance保存;
并用静态数组变量$_host记录每台机器上的MYSQL在此次请求中被连接了多少次(也可以创建其他变量,用来记录每个表执行insert,update,delete多少次等等)
广告: 我的站点,www.zhangzhibin.com,这个站点就是用我写的框架实现的,上边的数据库类就是摘取自我的框架(随后会补全介绍它的用法)
概述:
一次请求(或执行一次PHP交互),如果只连接了一个主机上的MYSQL数据库那么该MYSQL类就只生成一个对应的实例;
如果一次请求需要连接了不同机器上的MYSQL数据库,那么该MYSQL类就会生成多个实例,其中每一个实例对应一台机器;
这些实例用静态数组变量$instance保存;
并用静态数组变量$_host记录每台机器上的MYSQL在此次请求中被连接了多少次(也可以创建其他变量,用来记录每个表执行insert,update,delete多少次等等)
<?php class mysqldb { //多主机的单一实例 private static $instance = array(); //连接 public $link = null; private static $_host = array();//已经连接的主机名 protected $_database = '';//当前数据库名 protected $_tablename = '';//当前表的表名 protected $_primarykey = '';//当前表的主键 protected $_dt ='';//database.tablename //如果主机没变,并且已经存在MYSQL连接,就不再创建新的连接 //如果主机改变,就再生成一个实例创建一个连接 public static function getInstance($host, $username, $password, $database, $table, $primarykey) { $is_host_exist = array_key_exists($host, mysqldb::$_host); if (!$is_host_exist) { mysqldb::$instance[$host] = new mysqldb($host, $username, $password, $database, $table, $primarykey); } mysqldb::$_host[$host] = empty(mysqldb::$_host[$host]) ? 1 : mysqldb::$_host[$host] + 1; return mysqldb::$instance[$host]; } private function __construct($host, $username, $password, $database, $table, $primarykey) { $this->link = new mysqli($host, $username, $password); if($this->link->connect_error) { echo $this->link->connect_error,'<br>'; exit; } $this->_database = $database;//database name $this->_tablename = $table;//table name $this->_primarykey = $primarykey;//primary key $this->_dt = "`{$this->_database}`.`{$this->_tablename}`"; $this->link->query("set names utf8"); } public static function getLinkedHost() { return mysqldb::$_host; } }
广告: 我的站点,www.zhangzhibin.com,这个站点就是用我写的框架实现的,上边的数据库类就是摘取自我的框架(随后会补全介绍它的用法)
相关文章推荐
- Tomcat 支持虚拟主机技术
- Apache虚拟主机实例
- WPF程序单一实例启动问题
- 为多核Solr实例添加一个支持默认示例数据的核
- 建立多个ftp虚拟机用户支持不同的访问权限实例
- .net让线程支持超时的方法实例和线程在执行结束后销毁的方法
- zabbix修改之中文主机名 触发器表达式支持中文
- 使用SQL语句创建SQL数据脚本(应对万网主机部分不支持导出备份数据)
- 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性,并检查 SQL Server 的实例正在
- CSS滑动门技术实现TAB标签切换效果实例,支持各种浏览器
- 在虚拟机上建64位操作系统:此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态
- 稳扎稳打Silverlight(2) - 1.0实例之支持录音和回放的钢琴(Silverlight+ASP.NET AJAX+DLINQ)
- ”此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭“的解决
- 虚拟机vmware安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题
- BootStrap Table对前台页面表格的支持实例讲解
- IP地址与子网掩码总结,网络号、主机号、网络地址、主机地址实例分析
- 如何使32bit Linux主机支持4GB以上的大内存
- 给大家分享鄙人一直在用的国外主机,支持支付宝支付(无限空间,无限流量,可做N个网站)
- 使用Cacti监控远程主机时的snmp.conf配置实例 推荐
- 如何让网站所在虚拟主机支持apk格式文件下载