连接状态

插件改变了 PHP MySQL 连接的控制,新建连接会从一个连接池中获取,用于替代 client-server

的单一连接方式。连接池包含一组 master 连接,和可选数目的 slave 连接。

连接池中的每一个连接都有自己的状态,例如:SQL 用户变量、临时表、事物状态。

所有的链接状态可以参考 连接池与切换 说明。

如果插件决定要为负载均衡切换连接,应用可能得到一个不同状态的链接。

应用必须能够处理这些问题。

示例 #1 配置了一个 master 和一个 slave 的插件

{

"myapp": {

"master": {

"master_0": {

"host": "localhost",

"socket": "\/tmp\/mysql.sock"

}

},

"slave": {

"slave_0": {

"host": "192.168.2.27",

"port": "3306"

}

}

}

}

示例 #2 陷阱:连接状态和 SQL 用户变量

$mysqli= newmysqli("myapp","username","password","database");

if (!$mysqli)/* Of course, your error handling is nicer... */die(sprintf("[%d] %s\n",mysqli_connect_errno(),mysqli_connect_error()));/* 链接 1:绑定 SQL 用户变量,因为没有 SELECT 所以在 master 上执行 */if (!$mysqli->query("SET @myrole='master'")) {printf("[%d] %s\n",$mysqli->errno,$mysqli->error);

}/* 连接 2:因为有 SELECT 所以在 slave 上执行 */if (!($res=$mysqli->query("SELECT @myrole AS _role"))) {printf("[%d] %s\n",$mysqli->errno,$mysqli->error);

} else {$row=$res->fetch_assoc();$res->close();printf("@myrole = '%s'\n",$row['_role']);

}$mysqli->close();?>

以上例程会输出:

@myrole = ''

范例打开了负载均衡连接,并且执行两个查询。

第一个查询 SET @myrole='master' 没有以 SELECT

开头。然而并不能识别这是一个应该在 slave 中执行的查询,所以他被在 master 中执行。

所以这个变量被绑定在 master 连接中,master 连接设定被改变了。

然后执行 SELECT @myrole AS _role 查询,差将将其识别为只读查询,

并且发送给 slave 服务器。这样这个查询不会获得任何已经设定的 SQL 用户变量。

这个变量被设定在了第一次使用的 master 连接上面。所以范例将打印

@myrole = ''。

这是开发人员必须注意的问题,插件并不会监控所有连接的变化情况。

若要监控所有的变化,将消耗大量的 CPU 资源。

当然这种陷阱,可以通过 SQL hints 解决。

php mysql 连接不上_PHP: 连接状态 - Manual相关推荐

  1. php mysql 连接不上_php连接不上MySQL问题解决办法_PHP教程

    php连接不上mysql的原因有很多种常用的可能是函数没开启或mysql数据库配置有问题,下面我来给大家介绍php连接不上MySQL一些问题的分析与解决方法. 现象1 在PHP error log里发 ...

  2. PHP与MySQL连接菜鸟教程_PHP 连接 MySQL - PHP 教程 - 菜鸟学堂-脚本之家

    PHP 连接 MySQL PHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi extension ("i" 意为 improved) PDO (PHP Dat ...

  3. php连接mysql的区别吗_php连接mysql之mysql_connect()与mysqli_connect()的区别

    实例 打开一个到 MySQL 服务器的新的连接: $con=mysqli_connect("localhost","wrong_user","my_p ...

  4. 计算机网怎样连接网络连接不上,网络连接不上,详细教您电脑网络连接不上怎么解决...

    我们的生活因为无线局域网的出现获得了很大的方便,不过因为无限网络信道特有的性质,有时我们会在使用过程中出现电脑网络连接不上的情况,这使得无线网络连接具有不稳定性,影响了服务质量.应该怎么办呢?下面,小 ...

  5. joycon 连不上_switch手柄连接不上ns 连接不上蓝牙手柄硬件等问题解决方案

    switch手柄连接不上ns,相信大家多多少少都会遇到的问题,有时候不仅会出现手柄连接不上,还有一些小问题,比如无法给手柄充电,识别不了游戏卡等等,这些虽说是小问题,但处理起来也是够麻烦的,在这里给大 ...

  6. python与sql连接不上_Python连接不上SQL Server的两种根治思路

    连接不上数据库,首先可以排除是代码的问题,连接方式都是千篇一律的. 大多数问题都是本机的两个原因造成的,1.服务没有开启,2.没有启动SQL配置的TCP/IP 下面给出统一解决方案: 首先从开始菜单找 ...

  7. 虚拟机服务器拒绝密码,Xshell连接不上虚拟机连接提示SSH服务器拒绝了密码,请再试一次...

    问题1:Xshell连接不上虚拟机 #启动ssh服务 /etc/init.d/ssh start #查看SSH服务22端口是否开启 netstat -antulp | grep ssh 问题2:XSh ...

  8. redis远程连接不上_redis连接认证及bind的注意事项

    redis连接安全相关的设置主要有三个:protected-mode,bind,requirepass.下面我们来看一下这三个设置的作用. 第一个设置:protected-mode yes 开启保护模 ...

  9. 网络映射连接不上_Mac连接不上无线网络的解决方法

    Mac电脑突然连不上WiFi了怎么办?小编使用了这么久的Mac,这种情况也是出现过很多次的,这个问题如果不是因为苹果无线网硬件出现了故障,基本都能通过排除法来解决问题,主要解决思路是从路由器过热造成网 ...

最新文章

  1. net.sf.json将string转为map
  2. spring 发送html邮件,Springboot2.0 发送HTML 格式的邮件。
  3. Ubuntu 14.04系统下安装和编译QT 5.9.2库(桌面版/ARM嵌入式IMX6版)
  4. 活动合作 | 2018GAITC大会:AI领袖、应用指南、窥见风口,还能从中获得更多
  5. mongodb从3.2升级到4.4_人教版六年级下册数学微课视频及练习4.4.2 比例尺的应用...
  6. 我的本科毕业论文——Messar即时通讯系统
  7. 高级人才、专业技术人才、技能人才 目录 1. 高级人才, 1 1.1. 专业技术人才 2 2. 专业技术人才 2 3. 高技能人才 3 1.高级人才, 可迁入本市市区落户,其配偶、未婚子女(含离
  8. 运筹学考题汇总(填空题+计算题)带答案
  9. 安装sqlserver 2017安装 需要安装oracle JRE7 更新 51(64位)或更高版本(已解决)
  10. Windows下MySQL定时备份脚本
  11. 增加Java项目经验
  12. 输出0~1000内的质数 C语言
  13. 08 干系人管理ITO
  14. 不要试图做完人--任正非在华为优秀党员座谈会上的发言
  15. 【修真院WEB小课堂】 angular js中的依赖注入是什么?
  16. 如何成为一名卓越的软件工程师
  17. 当梵高遇上路飞——海贼王op风格迁移
  18. FLStudio中文全套插件包FL水果20.8中文宿主软件插件
  19. android九宫格隐藏,android九宫格锁屏控件
  20. 【图书管理系统】附源码+教程

热门文章

  1. Docker基本原理概述
  2. MindSpore技术理解(下)
  3. 适用于CUDA GPU的Numba 随机数生成
  4. 横竖屏切换时Activity的生命周期
  5. ps -ef 的含义
  6. Kotlin implements 的实现
  7. linux的三个时间
  8. 【 全干货 】5 分钟带你看懂 Docker !
  9. 2021襄阳谷城高考成绩查询,2021高考襄阳谷城县考生求助电话
  10. Go 学习笔记(19)— 函数(05)[如何触发 panic、触发 panic 延迟执行、panic 和 recover 的关系]