Belajar Event Driven di PHP dengan ReactPHP
Tahukan kamu bahwa PHP
dapat melakukan sesuatu secara asynchronous ?. Saya baru mencoba menggunakan
library react/mysql
untuk query data dengan men-select 2 field dengan limit 10.000 dan hasilnya luar biasa.
Ndak sampai 1 detik untuk mencetak 10.000 data tsb.
Bagi yang belum tahu apa itu ReactPHP
, ReactPHP
adalah low-level library untuk event-driven programming di PHP. Intinya terdiri dari event loop pada level atas yang menyediakan utility low-level seperti Streams abstraction, async DNS resolver, network client/server, HTTP client/server dan interaksi dengan proses.
ReactPHP mampu melakukan proses secara asynchronous
<?php
require(dirname(__FILE__) . '/vendor/autoload.php');
use React\MySQL\Factory;
use React\MySQL\QueryResult;
$loop = React\EventLoop\Factory::create();
$factory = new Factory($loop);
$uri = 'user:passwd@127.0.0.1/test';
$conn = $factory->createLazyConnection($uri);
$conn->query('select user_id, username FROM user LIMIT 10000')->then(
function (QueryResult $command) {
print_r($command->resultRows);
echo count($command->resultRows) . ' row(s) in set' . PHP_EOL;
},
function (Exception $e) {
echo 'Error: ' . $error->getMessage() . PHP_EOL;
}
);
$conn->quit();
$loop->run();
Sekian