reactphp-x / mysql-pool
There is no license information available for the latest version (v1.0.0) of this package.
v1.0.0
2024-08-10 01:11 UTC
Requires
- react/async: ^4.1
- react/mysql: ^0.6
- reactphp-x/pool: ^1.0
This package is auto-updated.
Last update: 2024-10-12 06:44:49 UTC
README
+----------------+
| connect pool --------------------------> mysql server
| | |
| | |
| | |
| app |
+----------------+
install
composer require reactphp-x/mysql-pool -vvv
Usage
<?php require_once './vendor/autoload.php'; use ReactphpX\MySQL\Pool; use React\MySQL\QueryResult; use React\EventLoop\Loop; $pool = new Pool('username:password@host/databasename?timeout=5', [ 'min_connections' => 2, // min 2 connection 'max_connections' => 10, // max 10 connection 'max_wait_queue' => 110, // how many sql in queue 'wait_timeout' => 5,// wait time include response time 'keep_alive' => 60, // ]); qeury($pool); queryStream($pool); function qeury($pool) { for ($i=0; $i < 90; $i++) { $pool->query('select * from blog')->then(function (QueryResult $command) use ($i) { echo "query:$i\n"; if (isset($command->resultRows)) { // this is a response to a SELECT etc. with some rows (0+) // print_r($command->resultFields); // print_r($command->resultRows); echo count($command->resultRows) . ' row(s) in set' . PHP_EOL; } else { // this is an OK message in response to an UPDATE etc. if ($command->insertId !== 0) { var_dump('last insert ID', $command->insertId); } echo 'Query OK, ' . $command->affectedRows . ' row(s) affected' . PHP_EOL; } }, function (\Exception $error) { // the query was not executed successfully echo 'Error: ' . $error->getMessage() . PHP_EOL; }); } } function queryStream($pool){ for ($i=0; $i < 90; $i++) { (function($pool,$i){ $stream = $pool->queryStream('select * from blog'); $stream->on('data', function ($data) use ($i) { // echo "queryStream:$i\n"; // print_r($data); }); $stream->on('error', function ($err) { echo 'Error: ' . $err->getMessage() . PHP_EOL; }); $stream->on('end', function () use ($i) { echo 'Completed.'.$i . PHP_EOL; }); })($pool, $i); } } Loop::addPeriodicTimer(5, function() use ($pool) { // qeury($pool); // queryStream($pool); }); $pool->translation(function($connection){ $connection->query("INSERT INTO blog_test (content) VALUES ('hello world success')"); // throw new Exception("Error Processing Request", 1); })->then(function($result){ var_dump($result); }, function($error){ var_dump($error->getMessage()); });