sohris/reactphp-mysql

基于ReactPHP的MySQL数据库异步和并行连接的仓库

0.1.1 2024-08-12 21:43 UTC

This package is auto-updated.

Last update: 2024-09-13 14:21:37 UTC


README

Packagist Dependency Version Build Packagist Downloads

ReactPHP MySQL是一个提供异步连接到MySQL数据库的包,使高性能操作的非阻塞执行成为可能。利用事件驱动模型,它允许创建一个连接池,其中建立了多个数据库连接线程。这可以实现脚本的并行执行和查询,优化处理和操作效率。

特性

  • 异步连接:非阻塞的MySQL连接,以增强性能。
  • 并行查询池:同时执行多个查询以提高效率。

安装

使用PHP Composer

    compose require sohris/reactphp-mysql

用法

简单用法

创建单个数据库连接并执行一个查询。

require 'vendor/autoload.php';

$user = "user";
$password = "pass";
$host = "host";
$port = 3306;

//Create a new Connection
$connector = Sohris\Mysql\Connector\Factory::create($user, $password, $host, $port);

//Or
//Create a new lazy Connection
$connector = Sohris\Mysql\Connector\Factory::createLazyConnection($user, $password, $host, $port);

//Or
//To force a new connection, use a createLazyNewConnector
$connector = Sohris\Mysql\Connector\Factory::createLazyNewConnector($user, $password, $host, $port);


$connector->query("SELECT * FROM information_schema.ROUTINES Limit 1")
            ->then(function(Sohris\Mysql\Io\QueryResult $result){   
                        var_dump($result->resultRows);
                    },
                    function(Exception $e){
                        var_dump($e->getMessage());
                    });

池使用

Pool连接提供更多数据库连接,允许在数据库中进行并行研究。与简单用法不同,要执行新查询,请使用Pool类中的exec方法。

require __DIR__."/../vendor/autoload.php";

$user = "user";
$password = "pass";
$host = "host";
$port = 3306;


//Create a connection
$connector = new \Sohris\Mysql\Pool($user, $password, $host, $port);

$connector->exec("SELECT * FROM information_schema.ROUTINES Limit 1")
            ->then(function(Sohris\Mysql\Io\QueryResult $result){   
                        echo "Result 1" . PHP_EOL;                        
                    },
                    function(Exception $e){
                        var_dump($e->getMessage());
                    });

要配置数据库连接的最大线程数,请使用Pool类中的setPoolSize方法来设置限制。

$connector->setPoolSize(2);

许可证

本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE文件。