Workerman 是什么?
Workerman是一款纯PHP开发的开源高性能的PHP 应用容器。
Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的服务框架,你可以用它开发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客户端、异步Redis、异步Http、异步消息队列等众多高性能组件。
Worker 类是什么?
WorkerMan中有两个重要的类Worker与Connection。Worker 对象实际上是一个容器,它可以以特定的协议去监听某个端口。当客户端连接到这个容器监听端口之后,会在这个 worker 容器内部产生一个 connection 对象。在 WorkerMan 中通过操作这个 connection 对象来完成对客户端发送数据以及接收客户端数据的操作。
简单使用
<?php
use Workerman\\\\Worker;
use Workerman\\\\Connection\\\\TcpConnection;
use Workerman\\\\Protocols\\\\Http\\\\Request;
require_once __DIR__ . \\\'/vendor/autoload.php\\\';
$worker = new Worker(\\\'http://0.0.0.0:8686\\\');
$worker->onWorkerStart = function ($worker) {
};
$worker->onConnect = function ($connection) {
echo \\\"connection success\\\" . PHP_EOL;
};
$worker->onMessage = function (TcpConnection $connection, Request $request) {
$connection->send(\\\"Hi 开源技术小栈\\\");
};
$worker->onClose = function ($connection) {
echo \\\"connection close\\\" . PHP_EOL;
};
$worker->onWorkerStop = function ($worker) {
};
// 运行worker
Worker::runAll();
原创文章,作者:网络技术联盟站,如若转载,请注明出处:https://www.sudun.com/ask/49739.html