zoukankan      html  css  js  c++  java
  • 什么是workerman?

    简介:

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

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

    PHP进程管理:类似于操作系统的进程管理。

    socket:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

     

    服务端开发示例WebSocket Server

    1、新建文件start.php

    <?php
    use WorkermanWorker;
    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();

    2、启动服务:

    php start.php start -d

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

    3、查看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相关系统调用。

  • 相关阅读:
    [Nginx] 解决跨域been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    [GO项目]开源免费在线客服系统-真正免费开源-GOFLY0.3.2发布-极简强大Go语言开发网页客服
    [PHP] php使用curl_multi_exec并行同时执行http请求
    [PHP] PHP redis滑动窗口频率限制
    [PHP] xml转为数组函数
    [javascript] 全国省市县JSON/XML数据(包含台湾和海外国家一级)
    [MySQL] 注意MySQL5.1不支持utf8mb4 Error 1115: Unknown character set: 'utf8mb4'
    [Go] linux下安装go1.16
    [GO项目]开源免费在线客服系统-真正免费开源-GOFLY0.2.9发布-极简强大Go语言开发网页客服
    [PHP]PHP不支持方法重载和只支持方法覆盖
  • 原文地址:https://www.cnblogs.com/mjm212/p/6629378.html
Copyright © 2011-2022 走看看