介绍
Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。
Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的socket服务框架,你可以用它开发tcp代理、梯子代理、做游戏服务器、邮件服务器、ftp服务器、甚至开发一个php版本的redis、php版本的数据库、php版本的nginx、php版本的php-fpm等等。Workerman可以说是PHP领域的一次创新,让开发者彻底摆脱了PHP只能做WEB的束缚。
实际上Workerman类似一个PHP版本的nginx,核心也是多进程+Epoll+非阻塞IO。Workerman每个进程能维持上万并发连接。由于本身常住内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP、UNIXSOCKET,支持长连接,支持Websocket、HTTP、WSS、HTTPS等通讯协议以及各种自定义协议。拥有定时器、异步socket客户端、异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件
在tp5.0 框架中使用
| |
| curl -Ss http://www.workerman.net/check.php | php |
| |
| composer require topthink/think-worker=1.0.* |
| |
| composer require workerman/workerman=3.3.0 |
创建server.php 文件
| <?php |
| |
| define('APP_PATH', __DIR__ . '/../application/'); |
| define('BIND_MODULE','admin/Worker'); |
| |
| require __DIR__ . '/../thinkphp/start.php'; |
创建 Worker 文件
| |
| <?php |
| |
| |
| namespace app\admin\controller; |
| |
| use think\worker\Server; |
| use \Workerman\Connection\AsyncTcpConnection; |
| |
| class Worker extends Server |
| {protected $socket = ""; |
| |
| protected $modle = null;public function __construct(){$this->processes = 16;$this->socket = 'websocket://127.0.0.1:1234';parent::__construct(); |
| |
| |
| |
| |
| |
| public function onMessage($ws_connection, $data){ |
| |
| } |
| |
| |
| |
| |
| public function onConnect($connection){ |
| |
| } |
| |
| |
| |
| |
| public function onClose($connection){echo "close";} |
| |
| |
| |
| |
| |
| |
| public function onError($connection, $code, $msg){echo "error $code $msg\n";} |
| |
| |
| |
| |
| public function onWorkerStart($worker){ |
| |
| } |
| } |
异步处理 创建 Asyncworker.php 文件
| <?php |
| |
| namespace app\admin\controller; |
| |
| use think\worker\Server; |
| use \Workerman\Connection\AsyncTcpConnection; |
| |
| class Asyncworker extends Server |
| {protected $socket = ""; |
| |
| protected $modle = null;protected $monitorviewController = null;public function __construct(){$this->processes = 16;$this->socket = 'Text://127.0.0.1235'; |
| |
| |
| |
| |
| |
| public function onMessage($connection, $route){ |
| |
| * 当连接建立时触发的回调函数 |
| * @param $connection |
| */ public function onConnect($connection){} |
| |
| |
| public function onClose($connection){ |
| |
| } |
| |
| |
| |
| |
| public function onError($connection, $code, $msg){ echo "error $code $msg\n";} |
| |
| |
| public function onWorkerStart($worker){}} |
| |
异步服务文件 serverAsync.php
| define('APP_PATH', __DIR__ . '/../application/'); |
| define('BIND_MODULE','admin/Asyncworker'); |
| |
| require __DIR__ . '/../thinkphp/start.php'; |
启动服务
| |
| |
| php serverAsync.php start -d |
| php server.php start -d |
| |
| |
| php server.php status |