用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 ...
随机推荐
- jenkins + nodejs + git 自动化部署前端
1. 创建自定义风格任务 2.填写项目描述 3.配置源码管理 4. 系统管理->插件管理 ->安装插件 5.配置系统管理->全局工具配置-> 6.配置全局 ssh 7. 继续 ...
- [LeetCode&Python] Problem 383. Ransom Note
Given an arbitrary ransom note string and another string containing letters from all the magazines, ...
- Unity 灯光探针用法教程
Unity 灯光探针用详解 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- 使用定时器通过改变图片的src来切换图片
点击以后开始自动切换图片 $("#page3_cover_1_back").click(function(){ var i=3; var haha=setInterval(func ...
- CSS3动画那么强,requestAnimationFrame还有毛线用
http://www.zhangxinxu.com/wordpress/2013/09/css3-animation-requestanimationframe-tween-%E5%8A%A8%E7% ...
- PHP5和PHP7的安装、PHP和apache的整合!
1.PHP5的安装: 下载: wget -c http://cn2.php.net/distributions/php-5.6.36.tar.gz (php5) wget -c http://cn2 ...
- 简单矩阵快速幂(HDU Tr A 1575)
题目中所给的方阵就是一个矩阵,而就是只要将题目所给矩阵不断进行相乘即可,本题中我采用的是直接重载运算符*,使矩阵每一个都进行运算,可以简化为只对对角线上的元素进行运算.最后所得结果就只需将最终的矩阵上 ...
- hdu 1556 A - Color the ball 数状数组做法
#include<bits/stdc++.h> using namespace std; ; int n; int c[maxn]; int lowbit(int x) { return ...
- 基本数据类型,数字int字符串str
基本数据类型 数字 int 字符串 str 布尔值 bool 列表 list 字典 dict 元组 tuple(待续...) 整数 int - 创建 a = 123 a = int(123) - 转换 ...
- System类的使用
1.System类: 不能被实例化,调用方式: System.方法 2.用于计算程序执行的时间,currentTimeMillis()方法 System.currentTimeMillis(): p ...