用swoole实现mysql的连接池--摘自https://github.com/153734009/doc/blob/master/php/mysql_pool.php
<?php | |
$serv = new swoole_server("0.0.0.0", 9508); | |
$serv->set(['worker_num'=>1, 'task_worker_num'=>5]); | |
function onReceive($serv, $fd, $from_id, $data) | |
{ | |
$sql = $data; | |
$result = $serv->taskwait($sql); | |
if($result !== false){ | |
$serv->send($fd, $result . "\n"); | |
}else{ | |
$serv->send($fd, "Err:Task timeout\n"); | |
} | |
//异步的时候就麻烦了,需要把$fd传递到onFinish,才能send数据到 | |
//$serv->task($sql); | |
} | |
/** | |
* task保持数据库连接 | |
* 使用静态变量,因为变量没有释放,所以才能保持连接 | |
* mysql连接的数量= task_worker_num | |
*/ | |
function onTask($serv, $fd, $from_id, $sql) | |
{ | |
static $conn = null; | |
if($conn == null){ | |
$conn = mysqli_connect('127.0.0.1', 'root', '123456', 'help'); | |
if(!$conn){ | |
$conn = null; | |
$serv->finish('ERR:'.mysqli_connect_error()); | |
return; | |
} | |
} | |
$result = $conn->query($sql); | |
if(!$result){ | |
$serv->finish('ERR:'.mysqli_error($conn)); | |
return; | |
} | |
$data = $result->fetch_all(MYSQLI_ASSOC); | |
$serv->finish('OK:'.serialize($data)); | |
} | |
function onFinish($serv, $task_id, $data) | |
{ | |
// 异步Task时有效 | |
echo "AsyncTask Finish:Connect.PID=".posix_getpid().PHP_EOL; | |
} | |
$serv->on('Receive', 'onReceive'); | |
$serv->on('Task', 'onTask'); | |
$serv->on('Finish', 'onFinish'); | |
$serv->start(); | |
//以下是客户端代码 | |
//$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); //同步阻塞 | |
//$client->connect('172.18.107.194', 9508, 0.5, 0); | |
//$client->send("show tables"); | |
//$data = $client->recv(); | |
/** | |
* 查看mysql连接 | |
* | |
* 1. mysql -uroot -p123456 | |
* 2. show status; | |
* 其中的 | |
* Threads_connected | 1 | |
* 就是mysql连接数 | |
*/ |
用swoole实现mysql的连接池--摘自https://github.com/153734009/doc/blob/master/php/mysql_pool.php的更多相关文章
- Node.js使用MySQL的连接池
使用Nodejs+MySQL肯定比PHP和MySQL的组合更适合做服务器端的开发. 使用Nodejs你会从他的异步行为中获益良多.比如,提升性能,你无须在从已有的MySQL数据库迁移到其他的NoSQL ...
- [nodejs]解决mysql和连接池(pool)自动断开问题
最近在做一个个人项目,数据库尝试使用了mongodb.sqlite和mysql.分享一下关于mysql的连接池用法.项目部署于appfog,项目中我使用连接池链接数据库,本地测试一切正常.上线以后,经 ...
- Swoole 中使用 PDO 连接池、Redis 连接池、Mysqli 连接池
连接池使用说明 所有连接池的实现均基于 ConnectionPool 原始连接池: 连接池的底层原理是基于 Channel 的自动调度: 开发者需要自己保证归还的连接是可重用的: 若连接不可重用,需要 ...
- hibernate+mysql的连接池配置
1:连接池的必知概念 首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了. 以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放.如果频繁的 ...
- Tomcat 下 mysql的连接池配置和使用
最近维护的一个项目出了问题,最后分析是卡在数据库连接池上,然后就做了些学习. 先把我自己的方法写出来,再说下网上其他的没有成功的方法. 1.首先当然是先把mysql的jar包放在lib目录下,tonc ...
- Python下Mysql数据连接池——单例
# coding:utf-8 import threading import pymysql from DBUtils.PooledDB import PooledDB from app.common ...
- nodejs mysql 创建连接池
用Nodejs连接MySQL 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javas ...
- MySQL 使用连接池封装pymysql
备注:1,记得先修改连接的数据库哦,(用navicat更方便一点):2,分开两个py文件写入,运行sqlhelper.py文件 一.在utils.py中写 import pymysqlfrom DBU ...
- 码海拾遗:基于MySQL Connector/C++的MySQL操作(连接池)
1.MySQL安装及简单设置 (1)安装:在OSX系统下,可以使用万能的“brew install”命令来进行安装:brew isntall mysql(默认安装最新版的MySQL) (2)启动:br ...
随机推荐
- wx小程序 使用字体
1.下载项目下的字体库 2.解压复制iconfont.css中的代码到,小程序 app.wxss 3.使用: //icon-begindate表示开始时间的图标 <text class=&quo ...
- ubuntu16.04系统安装
0x1镜像下载 (1)下载地址http://cn.ubuntu.com/download/ 0x2 安装 (1)打开vmware,创建新的虚拟机 (2)选择自定义安装 (3)直接下一步,选择稍后安装系 ...
- JavaBasic_03
变量 变量定义的格式: 数据类型 变量名 = 初始化值; 可以在一行中定义多个变量(在实际开发中不推荐,推荐一行定义一个变量)数据类型 变量名1=初始化值,变量名,...,变量名n // ...
- Map集合与转化
|--Hashtable:底层是哈希表数据结构,是线程同步的.不可以存储null键,null值. |--HashMap:底层是哈希表数据结构,是线程不同步的.可以存储null键,null值.替代了Ha ...
- 测试那些事儿—web测试方法之输入框
一.字符型输入 (1)字符型输入框 英文全角,英文半角,数字,空或者空格,特殊字符“~!@#¥%.......&*?{}[]"特别要注意单引号和&符号.禁止直接输入特殊字符时 ...
- Codeforces 520B:Two Buttons(思维,好题)
题目链接:http://codeforces.com/problemset/problem/520/B 题意 给出两个数n和m,n每次只能进行乘2或者减1的操作,问n至少经过多少次变换后能变成m 思路 ...
- MogileFS-2.44 安装与配置
MogileFS-2.44 安装与配置 (转:https://my.oschina.net/u/1259000/blog/182277) 目录 一.MogileFS 介绍 1.1.环境 二.Mogil ...
- immutable-styles 基本试用
此文档来自官方文档,从官方demo 学起比较快 安装 官方推荐的是通过webpack 的构建方式,通过babel loader clone 代码 git clone https://github.co ...
- keydown,keypress,keyup三者之间的区别
最近看了Javascript高级教程中对过滤输入的介绍,想实现比如电话号码中不能包好非数值的字符,而相应文本中插入字符的操作是keypress事件,所以就想通过阻止这个事件的默认事件行为来阻止这个事件 ...
- wampserver变橙色,apache 服务无法启动!问题解决小记(安装失败亦可参考)
http://blog.csdn.net/haoaiqian/article/details/58147079 80端口被占用的可能性非常大,关掉IIS即可