深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 79|回复: 0
打印 上一主题 下一主题

workerman示例 Mysql代理

[复制链接]

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
跳转到指定楼层
楼主
发表于 2025-1-5 14:59:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
https://www.workerman.net/doc/wo ... ection/connect.html

  1. use Workerman\Worker;
  2. use Workerman\Connection\AsyncTcpConnection;
  3. use Workerman\Connection\TcpConnection;
  4. require_once __DIR__ . '/vendor/autoload.php';

  5. // 真实的mysql地址,假设这里是本机3306端口
  6. $REAL_MYSQL_ADDRESS = 'tcp://127.0.0.1:3306';

  7. // 代理监听本地4406端口
  8. $proxy = new Worker('tcp://0.0.0.0:4406');

  9. $proxy->onConnect = function(TcpConnection $connection)
  10. {
  11.     global $REAL_MYSQL_ADDRESS;
  12.     // 异步建立一个到实际mysql服务器的连接
  13.     $connection_to_mysql = new AsyncTcpConnection($REAL_MYSQL_ADDRESS);
  14.     // mysql连接发来数据时,转发给对应客户端的连接
  15.     $connection_to_mysql->onMessage = function(AsyncTcpConnection $connection_to_mysql, $buffer)use($connection)
  16.     {
  17.         $connection->send($buffer);
  18.     };
  19.     // mysql连接关闭时,关闭对应的代理到客户端的连接
  20.     $connection_to_mysql->onClose = function(AsyncTcpConnection $connection_to_mysql)use($connection)
  21.     {
  22.         $connection->close();
  23.     };
  24.     // mysql连接上发生错误时,关闭对应的代理到客户端的连接
  25.     $connection_to_mysql->onError = function(AsyncTcpConnection $connection_to_mysql)use($connection)
  26.     {
  27.         $connection->close();
  28.     };
  29.     // 执行异步连接
  30.     $connection_to_mysql->connect();

  31.     // 客户端发来数据时,转发给对应的mysql连接
  32.     $connection->onMessage = function(TcpConnection $connection, $buffer)use($connection_to_mysql)
  33.     {
  34.         $connection_to_mysql->send($buffer);
  35.     };
  36.     // 客户端连接断开时,断开对应的mysql连接
  37.     $connection->onClose = function(TcpConnection $connection)use($connection_to_mysql)
  38.     {
  39.         $connection_to_mysql->close();
  40.     };
  41.     // 客户端连接发生错误时,断开对应的mysql连接
  42.     $connection->onError = function(TcpConnection $connection)use($connection_to_mysql)
  43.     {
  44.         $connection_to_mysql->close();
  45.     };

  46. };
  47. // 运行worker
  48. Worker::runAll();
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-5 00:04 , Processed in 0.024302 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表