用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 ...
随机推荐
- Eclipse_设置_01_自动提示
- Spring Boot 揭秘与实战 自己实现一个简单的自动配置模块
文章目录 1. 实战的开端 – Maven搭建 2. 参数的配置 - 属性参数类 3. 真的很简单 - 简单的服务类 4. 自动配置的核心 - 自动配置类 5. spring.factories 不要 ...
- 读懂TCP状态转移
读懂TCP状态转移过程,对理解网络编程颇有帮助,本文将对TCP状态转移过程进行介绍,但各状态(总共11个)含义不在本文介绍的范围,请参考文末的书目列表. TCP状态转换图(state transiti ...
- Android全局可调试(ro.debuggable = 1)的一种另类改法
网上流传比较多的,是重打包boot.img.读aosp的init进程源码,发现通过patch init进程也可以实现相同目的. 首先看一下init进程对ro只读属性的检查: /* property_s ...
- aliyun服务器对象存储oss
aliyun OSS 使用简单.方便. 官方网址 aliyun.com 首先通过aliyun管理控制台申请OSS服务.通过AccessKeys分配Access Key ID和Access Key Se ...
- flask中的模型
1.什么是模型 模型,是根据数据库中表的结构而创建出来的class.每一张表对应到编程语言中,就是一个class表中的每一个列对应到编程语言中就class中的一个属性. 2.ORM的三大特征 1.数据 ...
- 无用之flask学习
一.认识flask 1.短小精悍.可扩展性强 的一个web框架 注意:上下文管理机制 2.依赖wsgi:werkzurg from werkzeug.wrappers import Request, ...
- (16)JavaScript的流程控制(js的循环)
流程控制有3种结构 1.顺序结构:代码执行的本质就是顺序结构 2.分支结构:if家族 语法规则: if (条件1) { //代码块1}else if (条件2){ //代码块1}//如果所有条件都不满 ...
- 马拉车 o(n)(最长连续回文串) hdu 3068
#include<bits/stdc++.h> ; using namespace std; +]; string manacher(string ss) { string tt=&quo ...
- hdu4965 Fast Matrix Calculation 矩阵快速幂
One day, Alice and Bob felt bored again, Bob knows Alice is a girl who loves math and is just learni ...