什么是workerman?

简介:php

workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,即可以开发出本身的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。nginx

workerman的目标是让PHP开发者更容易的开发出基于socket的高性能的应用服务,而不用去了解PHP socket以及PHP多进程细节。 workerman自己是一个PHP多进程服务器框架,具备PHP进程管理以及socket通讯的模块,因此不依赖php-fpm、nginx或者apache等这些容器即可以独立运行。web

PHP进程管理:相似于操做系统的进程管理。apache

socket:网络上的两个程序经过一个双向的通讯链接实现数据的交换,这个链接的一端称为一个socket。服务器

 

服务端开发示例WebSocket Serverwebsocket

一、新建文件start.php

<?php
use Workerman\Worker;
require_once './Workerman/Autoloader.php';

// 建立一个Worker监听2346端口,使用websocket协议通信
$ws_worker = new Worker("websocket://0.0.0.0:2346");

// 启动4个进程对外提供服务
$ws_worker->count = 4;

// 当收到客户端发来的数据后返回hello $data给客户端
$ws_worker->onMessage = function($connection, $data)
{
    // 向客户端发送hello $data
    $connection->send('hello ' . $data);
};

// 运行
Worker::runAll();

二、启动服务:

php start.php start -d

使用以上的语句启动start.php   ,建立一个Worker监听2346端口,使用websocket协议通信而且启动四个进程对外服务,当收到请求时会传送数据给客户端。网络

三、查看workerman运行状态:

php start.php status

wokerman 的几大特性:并发

纯PHP开发
workerman彻底使用PHP开发,使用workerman开发的应用程序不依赖php-fpm、apache、nginx这些容器就能够独立运行。 这使得PHP开发者开发、部署、调试应用程序很是方便。

支持PHP多进程
为了充分发挥服务器多CPU的性能,workerman默认支持多进程多任务。workerman开启一个主进程和多个子进程对外提供服务, 主进程负责监控子进程退出信号,并负责生成新的子进程去处理服务,这样作不只提升了应用程序的性能,并且使得workerman更加稳定。

支持TCP、UDP
workerman支持TCP和UDP两种传输层协议,只须要更改配置的一个字段,即可以更换传输层协议,业务代码无需任何改动。

支持长链接
不少时候须要PHP应用程序要与客户端保持长链接,好比聊天室、游戏等,可是传统的PHP容器(apache、nginx、php-fpm)很难作到这一点。 使用workerman能够轻松使用PHP长链接。php单个进程能够支持几千甚至几万的并发链接,多进程则可支持数十万甚至上百万的并发链接。

支持各类应用层协议
接口上支持各类应用层协议,包括自定义协议。Workerman默认支持的协议有HTTP、WebSocket、以及简单的Text文本协议。 同时Workerman提供了通用的协议接口,开发者基于此接口即可以方便的开发出本身的协议。

支持高并发
workerman支持Libevent事件轮询库(须要安装Libevent扩展), 使用Libevent在高并发时性能很是卓越,若是没有安装Libevent则使用PHP内置的Select相关系统调用。
框架

相关文章
相关标签/搜索