用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 ...
随机推荐
- SpringMvc使用FastJson做为json的转换器(注解方式)
在使用XML方式配置项目,使用fastjson做为Json转换器时通常的在XML内添加如下的配置: <mvc:message-converters register-defaults=" ...
- Spring Boot 揭秘与实战(二) 数据存储篇 - 声明式事务管理
文章目录 1. 声明式事务 2. Spring Boot默认集成事务 3. 实战演练4. 源代码 3.1. 实体对象 3.2. DAO 相关 3.3. Service 相关 3.4. 测试,测试 本文 ...
- Spring Batch 简介
Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统.Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问 ...
- 【leetcode】350. Intersection of Two Arrays II
problem 350. Intersection of Two Arrays II 不是特别明白这道题的意思,例子不够说明问题: 是按顺序把相同的元素保存下来,还是排序,但是第二个例子没有重复... ...
- 【letcode】5-LongestPalindromicSubstring
回文串 回文串(palindromic string)是指这个字符串无论从左读还是从右读,所读的顺序是一样的:简而言之,回文串是左右对称的.一般求解一个字符串的最长回文子串问题. problem:Lo ...
- Java中的Arrays类使用详解
首先先创建一个打印数组的方法,方便后面直接使用 public static void output(int []a) { for(int i=0;i<a.length;i++) { System ...
- 给Linux服务器设置共享文件目录
通过samba软件 :yum install samba 修改配置文件:vi /etc/samba/smb.conf 添加 [WORKSPACE] comment = workspace ...
- webapi core2.1 IdentityServer4.EntityFramework Core进行配置和操作数据
https://identityserver4.readthedocs.io/en/release/quickstarts/8_entity_framework.html 此连接的实践 vscode ...
- shutil模块(高级的文件、文件夹、压缩包处理模块)
shutil 模块 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一个文件中 import shutil s ...
- #366 A-C
A. Hulk 题意是给你一个n 输出一个英文字符串,找下规律就发现 当(i!=n&&i%2==1) 输出的是 I hate that (注意大写) 当(i!=n&&i ...