异步react/mysql

(要求Workerman版本>=3.3.6)

注意:

此组件是第三方组件,可能会有潜在的bug,建议使用Workerman\MySQL组件。

安装:

  1. composer require react/mysql

示例:

  1. <?php
  2. require_once __DIR__ . '/vendor/autoload.php';
  3. use Workerman\Worker;
  4. $worker = new Worker('text://0.0.0.0:6161');
  5. // 进程启动时
  6. $worker->onWorkerStart = function() {
  7. global $mysql;
  8. // 获得workerman的event-loop,
  9. $loop = Worker::getEventLoop();
  10. // 连接参数
  11. $mysql = new React\MySQL\Connection($loop, array(
  12. 'host' => '127.0.0.1', // 不要写localhost
  13. 'dbname' => '数据库名',
  14. 'user' => '用户名',
  15. 'passwd' => '密码',
  16. ));
  17. // 出现错误时
  18. $mysql->on('error', function($e){
  19. echo $e;
  20. });
  21. // 执行连接
  22. $mysql->connect(function ($e) {
  23. if($e) {
  24. echo $e;
  25. } else {
  26. echo "connect success\n";
  27. }
  28. });
  29. };
  30. // 收到客户端请求时
  31. $worker->onMessage = function($connection, $data) {
  32. global $mysql;
  33. // 执行异步查询
  34. $mysql->query('show databases' /*$data*/, function ($command, $mysql) use ($connection) {
  35. if ($command->hasError()) {
  36. $error = $command->getError();
  37. } else {
  38. $results = $command->resultRows;
  39. $fields = $command->resultFields;
  40. $connection->send(json_encode($results));
  41. }
  42. });
  43. };
  44. Worker::runAll();

文档:

https://github.com/bixuehujin/reactphp-mysql

注意:

1、所有的异步编码必须在onXXX回调中编写

2、异步客户端需要的$loop变量请使用Worker::getEventLoop();返回值