AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

PHP異步非阻塞MySQL客戶端連接池

來源: 責編: 時間:2024-09-10 09:50:56 95觀看
導讀概述AMPHP是一個事件驅動的PHP庫集合,設計時考慮了纖程和并發性。amphp/mysql是一個異步MySQL客戶端。該庫通過在可用連接的可伸縮池中透明地分發查詢來實現并發查詢。客戶端透明地將這些查詢分布在一個可擴展的可用連

概述

AMPHP是一個事件驅動的PHP庫集合,設計時考慮了纖程和并發性。amphp/mysql是一個異步MySQL客戶端。該庫通過在可用連接的可伸縮池中透明地分發查詢來實現并發查詢。客戶端透明地將這些查詢分布在一個可擴展的可用連接池中,并使用100%的用戶態PHP,沒有外部擴展依賴性(例如ext/mysqli,ext/pdo等)。Ivn28資訊網——每日最新資訊28at.com

特征

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

安裝

此包可以作為Composer依賴項安裝Ivn28資訊網——每日最新資訊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;

執行結果:Ivn28資訊網——每日最新資訊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();

Ivn28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-112779-0.htmlPHP異步非阻塞MySQL客戶端連接池

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 告別繁瑣操作,實現一次登錄產品互通

下一篇: 超贊!Spring Boot 3.3 自帶 Controller 接口監控,大家趕緊用起來

標簽:
  • 熱門焦點
Top