Workerman 是一款纯 PHP 开发的开源高性能的 PHP socket 服务框架。
官方文档:http://doc.workerman.net/
Workerman 为 MySQL 代理
示例:http://doc.workerman.net/async-tcp-connection/connect.html
<?php use WorkermanWorker; use WorkermanConnectionAsyncTcpConnection; require_once './Workerman/Autoloader.php'; // 创建一个Worker监听2345端口,使用http协议通讯 $tcp_worker = new Worker("tcp://0.0.0.0:2345"); // 启动4个进程对外提供服务 $tcp_worker->count = 4; $tcp_worker->onConnect = function ($connection) { echo 'new connection '.$connection->getRemoteIp().PHP_EOL; // 异步建立一个到实际mysql服务器的连接 $connection_to_mysql = new AsyncTcpConnection('tcp://172.17.0.3:3306'); // mysql连接发来数据时,转发给对应客户端的连接 $connection_to_mysql->onMessage = function ($connection_to_mysql, $data) use ($connection) { $connection->send($data); }; // mysql连接关闭时,关闭对应的代理到客户端的连接 $connection_to_mysql->onClose = function($connection_to_mysql) use ($connection) { $connection->close(); }; // 执行异步连接 $connection_to_mysql->connect(); // 客户端发来数据时,转发给对应的mysql连接 $connection->onMessage = function($connection, $data) use ($connection_to_mysql) { $connection_to_mysql->send($data); }; // 客户端连接断开时,断开对应的mysql连接 $connection->onClose = function($connection) use ($connection_to_mysql) { $connection_to_mysql->close(); }; }; // 接收到浏览器发送的数据时回复hello world给浏览器 $tcp_worker->onMessage = function($connection, $data) { // 向浏览器发送hello world // $connection->send('hello world'); // $connection->close(); echo $data; }; // 运行worker Worker::runAll();
使用 Navicat 连接测试: