成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PHP異步非阻塞MySQL客戶(hù)端連接池

開(kāi)發(fā) 前端
客戶(hù)端透明地將這些查詢(xún)分布在一個(gè)可擴(kuò)展的可用連接池中,并使用100%的用戶(hù)態(tài)PHP,沒(méi)有外部擴(kuò)展依賴(lài)性(例如ext/mysqli,ext/pdo等)。

概述

AMPHP是一個(gè)事件驅(qū)動(dòng)的PHP庫(kù)集合,設(shè)計(jì)時(shí)考慮了纖程和并發(fā)性。amphp/mysql是一個(gè)異步MySQL客戶(hù)端。該庫(kù)通過(guò)在可用連接的可伸縮池中透明地分發(fā)查詢(xún)來(lái)實(shí)現(xiàn)并發(fā)查詢(xún)。客戶(hù)端透明地將這些查詢(xún)分布在一個(gè)可擴(kuò)展的可用連接池中,并使用100%的用戶(hù)態(tài)PHP,沒(méi)有外部擴(kuò)展依賴(lài)性(例如ext/mysqli,ext/pdo等)。

特征

  • 公開(kāi)一個(gè)非阻塞API,用于并發(fā)發(fā)出多個(gè)MySQL查詢(xún)
  • 透明的連接池克服了MySQL的基本同步連接協(xié)議
  • MySQL傳輸編碼支持(gzip,TLS加密)
  • 支持參數(shù)化預(yù)處理語(yǔ)句
  • 帶有提交和回滾事件鉤子的嵌套事務(wù)
  • 無(wú)緩沖結(jié)果以減少大型結(jié)果集的內(nèi)存使用
  • 完整的MySQL協(xié)議支持,包括所有可用的異步命令

安裝

此包可以作為Composer依賴(lài)項(xiàng)安裝

composer require amphp/mysql

使用

入門(mén)使用

<?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;

執(zhí)行結(jié)果:

[x] [0] 12161435
[x] [1] 開(kāi)源技術(shù)小棧
[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

迭代器

<?php

require '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();

事務(wù)支持

<?php

require '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();

責(zé)任編輯:武曉燕 來(lái)源: 開(kāi)源技術(shù)小棧
相關(guān)推薦

2020-11-17 08:53:07

MySQL數(shù)據(jù)庫(kù)技術(shù)

2011-06-01 13:54:10

MySQL

2019-12-30 15:30:13

連接池請(qǐng)求PHP

2009-11-09 15:49:01

WCF異步調(diào)用

2009-07-09 16:12:53

WeblogicJDBC

2010-06-09 14:39:58

2019-07-23 11:01:57

Python同步異步

2010-05-17 16:38:08

MySQL 連接池

2011-05-13 09:34:51

TomcatMysql連接池

2022-09-22 10:51:32

服務(wù)端開(kāi)發(fā)者異步非阻塞編程

2021-03-24 09:06:01

MySQL長(zhǎng)連接短連接

2021-03-04 08:34:55

同步阻塞非阻塞

2012-10-10 10:00:27

同步異步開(kāi)發(fā)Java

2010-10-11 17:46:01

mysql客戶(hù)端

2017-05-24 08:58:16

HiveServer界面工具

2021-08-06 10:37:34

ElasticOpenSearch開(kāi)發(fā)者

2020-03-24 15:15:29

HttpClientOkHttpJava

2010-07-12 10:05:08

MemcachedPHP

2009-11-25 13:21:30

PHP作為memcac

2021-09-22 15:46:29

虛擬桌面瘦客戶(hù)端胖客戶(hù)端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人区精品 | 久久一级大片 | av特级毛片 | 精品久久不卡 | 欧美亚洲国产日韩 | 亚洲精品在线视频 | 日本精品久久久一区二区三区 | 成人1区 | 国产乱码精品一区二区三区五月婷 | 久草成人网 | 狠狠操网站 | 欧美一区二区在线播放 | 精品一区二区三区四区在线 | 日韩国产一区二区三区 | 欧美日韩高清免费 | 亚洲精品白浆高清久久久久久 | 韩日一区 | 欧美一区二区三区在线播放 | 狠狠干五月天 | 婷婷综合久久 | 欧美国产精品一区二区三区 | 日本成人免费网站 | www.久久.com | 国产精品伦一区二区三级视频 | 国产亚洲高清视频 | 日本亚洲欧美 | 国产免费a| 99精品免费久久久久久久久日本 | 日韩a视频 | 精品一级 | 伊人久久免费 | 99久久久久久 | 免费中文字幕日韩欧美 | 国产精品久久久久久久午夜片 | 国产一区二区在线看 | 99久久精品免费看国产四区 | www.久久.com | 中文字幕爱爱视频 | 99在线免费观看视频 | 国产精品不卡 | 日韩精品一区二区三区中文字幕 |