当前位置:首页 > 科技  > 软件

PHP异步非阻塞MySQL客户端连接池

来源: 责编: 时间:2024-09-10 09:50:56 42观看
导读概述AMPHP是一个事件驱动的PHP库集合,设计时考虑了纤程和并发性。amphp/mysql是一个异步MySQL客户端。该库通过在可用连接的可伸缩池中透明地分发查询来实现并发查询。客户端透明地将这些查询分布在一个可扩展的可用连

概述

AMPHP是一个事件驱动的PHP库集合,设计时考虑了纤程和并发性。amphp/mysql是一个异步MySQL客户端。该库通过在可用连接的可伸缩池中透明地分发查询来实现并发查询。客户端透明地将这些查询分布在一个可扩展的可用连接池中,并使用100%的用户态PHP,没有外部扩展依赖性(例如ext/mysqli,ext/pdo等)。go728资讯网——每日最新资讯28at.com

特征

  • 公开一个非阻塞API,用于并发发出多个MySQL查询
  • 透明的连接池克服了MySQL的基本同步连接协议
  • MySQL传输编码支持(gzip,TLS加密)
  • 支持参数化预处理语句
  • 带有提交和回滚事件钩子的嵌套事务
  • 无缓冲结果以减少大型结果集的内存使用
  • 完整的MySQL协议支持,包括所有可用的异步命令

安装

此包可以作为Composer依赖项安装go728资讯网——每日最新资讯28at.com

composer require amphp/mysql

使用

入门使用

<?php/** * @desc mysql.php * @author Tinywan(ShaoBo Wan) * @date 2024/8/16 11:19 */declare(strict_types=1);require 'vendor/autoload.php';use Amp/Mysql/MysqlConfig;use Amp/Mysql/MysqlConnectionPool;$config = MysqlConfig::fromString(    "host=127.0.0.1 user=root password=123456 db=test");$pool = new MysqlConnectionPool($config);$statement = $pool->prepare("SELECT * FROM mall_member WHERE member_time = :member_time Limit 10");$timeOne = microtime(true);$result = $statement->execute(['member_time' => 0]);foreach ($result as $key => $row) {    echo '[x] ['.$key.'] '.$row['member_name'].PHP_EOL;}$timeTwo = microtime(true);echo '[x] Run Time Result : ' . ($timeTwo - $timeOne) . PHP_EOL;

执行结果:go728资讯网——每日最新资讯28at.com

[x] [0] 12161435[x] [1] 开源技术小栈[x] [2] 12161435[x] [3] 12161435[x] [4] T1800082[x] [5] 12161435[x] [6] 12161435[x] [7] 12161387[x] [8] 12161235[x] [9] 12161149[x] Run Time Result : 0.045973062515259

迭代器

<?phprequire 'support/bootstrap.php';use Amp/Future;use Amp/Mysql/MysqlConfig;use Amp/Mysql/MysqlConnectionPool;use function Amp/async;$db = new MysqlConnectionPool(MysqlConfig::fromAuthority(DB_HOST, DB_USER, DB_PASS, DB_NAME));$db->query("DROP TABLE IF EXISTS tmp");/* Create table and insert a few rows *//* we need to wait until table is finished, so that we can insert. */$db->query("CREATE TABLE IF NOT EXISTS tmp (a INT(10), b INT(10))");print "Table successfully created." . PHP_EOL;$statement = $db->prepare("INSERT INTO tmp (a, b) VALUES (?, ? * 2)");$future = [];foreach (/range(1, 5) as $num) {    $future[] = async(fn () => $statement->execute([$num, $num]));}/* wait until everything is inserted */$results = Future/await($future);print "Insertion successful (if it wasn't, an exception would have been thrown by now)" . PHP_EOL;$result = $db->query("SELECT a, b FROM tmp");foreach ($result as $row) {    var_dump($row);}$db->query("DROP TABLE tmp");$db->close();

事务支持

<?phprequire 'support/bootstrap.php';require 'support/generic-table.php';use Amp/Mysql/MysqlConfig;use Amp/Mysql/MysqlConnectionPool;$db = new MysqlConnectionPool(MysqlConfig::fromAuthority(DB_HOST, DB_USER, DB_PASS, DB_NAME));/* create same table than in 3-generic-with-yield.php */createGenericTable($db);$transaction = $db->beginTransaction();$transaction->execute("INSERT INTO tmp VALUES (?, ? * 2)", [6, 6]);$result = $transaction->execute("SELECT * FROM tmp WHERE a >= ?", [5]); // Two rows should be returned.foreach ($result as $row) {    /var_dump($row);}$transaction->rollback();// Run same query again, should only return a single row since the other was rolled back.$result = $db->execute("SELECT * FROM tmp WHERE a >= ?", [5]);foreach ($result as $row) {    /var_dump($row);}$db->close();

go728资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-112779-0.htmlPHP异步非阻塞MySQL客户端连接池

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 告别繁琐操作,实现一次登录产品互通

下一篇: 超赞!Spring Boot 3.3 自带 Controller 接口监控,大家赶紧用起来

标签:
  • 热门焦点
  • 帅气纯真少年!日本最帅初中生选美冠军出炉

    帅气纯真少年!日本最帅初中生选美冠军出炉

    日本第一帅哥初一生选美大赛冠军现已正式出炉,冠军是来自千叶县的宗田悠良。日本一直热衷于各种选美大赛,从&ldquo;最美JK&rdquo;起到&ldquo;最美女星&r
  • 服务存储设计模式:Cache-Aside模式

    服务存储设计模式:Cache-Aside模式

    Cache-Aside模式一种常用的缓存方式,通常是把数据从主存储加载到KV缓存中,加速后续的访问。在存在重复度的场景,Cache-Aside可以提升服务性能,降低底层存储的压力,缺点是缓存和底
  • K8S | Service服务发现

    K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 2天涨粉255万,又一赛道在抖音爆火

    2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了&mdash;&mdash;贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • 梁柱接棒两年,腾讯音乐闯出新路子

    梁柱接棒两年,腾讯音乐闯出新路子

    文丨田静 出品丨牛刀财经(niudaocaijing)7月5日,企鹅FM发布官方公告称由于业务调整,将于9月6日正式停止运营,这意味着腾讯音乐长音频业务走向消亡。腾讯在长音频领域还在摸索。为
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 苹果MacBook Pro 2021测试:仍不支持平滑滚动

    苹果MacBook Pro 2021测试:仍不支持平滑滚动

    据10月30日9to5 Mac 消息报道,苹果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后获得了不错的评价,亮点包括行业领先的性能,令人印象深刻的电池续航,精美丰
  • 电博会上海尔智家模拟500平大平层,还原生活空间沉浸式体验

    电博会上海尔智家模拟500平大平层,还原生活空间沉浸式体验

    电博会为了更好地让参展观众真正感受到智能家居的绝妙之处,海尔智家的程传岭先生同样介绍了展会上海尔智家的模拟500平大平层,还原生活空间沉浸式体验。程传
  • 电博会与软博会实现

    电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top