用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 ...
随机推荐
- es6 常用总结
1.变量 let 声明的变量只在它所在的代码块有效,不允许重复声明 const 声明是一个只读的常量.一旦声明,常量的值就不能改变. const与let的作用域相同,只在声明所在的块级作用域内有效. ...
- js中call、apply和bind的区别
在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢.在说区别之前还是先总结一下三者的相似之处:1.都是用来改变函数的this对象的指向的.2.第一个参数都是this要指向的对 ...
- Python之路,第一篇:Python入门与基础
第一篇:Python入门与基础 1,什么是python? Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 2,python的特征: (1)易于学习,易于利用: (2)开 ...
- TS 基础数据类型
1.基础数据类型 Boolean布尔值 Number数字 String字符串 Array数组 Tuple元组 Enum枚举 Any void Boolean布尔值:true/fals ...
- PowerDesigner15 增加Domain域
第一步: 第二步: 点击此按钮,在弹出框中对Domain域打钩即可
- 20155208徐子涵Vim编辑器学习经验
20155208徐子涵 2016-2017-2 Vim编辑器学习经验 当我们运用虚拟机进行书写代码时,我们就会用到Vim编辑器,用Vim编辑器进行编辑特别方便,而Vim编辑器中也有一些操作需要去学习. ...
- PTA——输出各位数字
PTA 7-37 输出整数各位数字 方法1: #include <stdio.h> #define N 10000 int main(){ long n, temp; ; scanf(&q ...
- Python学习-终端字体高亮显示1
Python学习-终端字体高亮显示 1.采用原生转义字符序列,对Windows有的版本不支持(比如win7),完美支持Linux 实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显 ...
- Elasticsearch Docker环境下安装
Elasticsearch Docker环境下安装 Daemon镜像配置的是https://registry.docker-cn.com Linux:vi /etc/docker/daemon.jso ...
- hdu 1556 A - Color the ball 其他做法
#include<bits/stdc++.h> using namespace std; ; int c[maxn]; int n; int main() { ) { cin>> ...