Skip to content

haiwenzhu/mysql-async

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#MysqlAsync Asynchronous MySQL Wrapper

##Install You can install via Composer, add the following code to you composer.json:

{
    "require": {
        "wrapper/mysql-async": "dev-master"
    },
    "repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/haiwenzhu/mysql-async"
    }
    ]
}

Or you can just include the file src/Wrapper/MysqlAsync.php

##Description Class method description:

  • MysqlAsync::query
mixed MysqlAsync::query ( string $sql , callable $callback [ , callable $error_callback , mysqli $link ] )

MysqlAsync query use database link from a connection pool, and you can use your specific link.

  • MysqlAsync::loop
mixed MysqlAsync::loop ( float $timeout )

This method return while all query is finished or timeout occured. return true when all query completed, false otherwise.

  • MysqlAsync::addQueryEvent
resource addQueryEvent ( resource $event_base , resource $event , string $sql [ , callable $callback , callable $error_callback , mysqli $link ] )

This method provide a event based interface to query asyncornously, you can use this with libevent function. You must install a simple php extension if you want use this event style method.

##Usage Common usage:

<?php
require('./vendor/autoload.php');

$async_wrapper = new Wrapper\MysqlAsync('localhost', 'root', '');
$callback = function($result) {
    print_r($result->fetch_all());
};
$error_callback = function($error, $errno) {
    echo "db error({$errno}) $error\n";
};

$async_wrapper->query("select sleep(1), 1", $callback, $error_callback);
$async_wrapper->query("select sleep(2), 2", $callback, $error_callback);
$async_wrapper->loop();

/*
//loop with timeout
do {
    $done = $async_wrapper->loop(0.1);
    echo "do something else\n";
} while(!$done);
*/

Libevent based usage:

<?php
require('./vendor/autoload.php');

$mysql_async = new Wrapper\MysqlAsync('localhost', 'root', '');

$callback = function($result) {
    print_r($result->fetch_all());
};
$error_callback = function($error, $errno) {
    echo "db error({$errno}) $error\n";
};

$event_base = event_base_new();
$event_1 = event_new();
$event_2 = event_new();
$mysql_async->addQueryEvent($event_base, $event_1, "select sleep(1), 1", $callback, $error_callback);
$mysql_async->addQueryEvent($event_base, $event_2, "select sleep(2), 2", $callback, $error_callback);

event_base_loop($event_base);

About

Asynchronous MySQL Api Wrapper

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages