精华内容
下载资源
问答
  • 需要使用到Workerman的知识。于是连夜学习和敲代码。终于在一周之内搞定了这个项目。 项目的大体结构如图所示: 前端建立WebSocket的服务,这里我们是在vue的项目中使用js创建这个服务: 和后端Workerman的...

    去年在公司做了一个可视化的项目。需要使用到Workerman的知识。

    项目的大体结构如图所示:

    前端建立WebSocket的服务,这里我们是在vue的项目中使用js创建这个服务:

     

    和后端Workerman的使用。因为我们需要携带后端的数据,向其他地方发出请求,从另外的一方获取数据,所以在tcp的服务又创建了一个AsyncTcpConnection用于异步创建一个TcpConnection连接

     

    在创建的websocket服务中,对tcp和它建立的服务之间,赋予uid的身份。如果有这个身份就向tcp发起前端数据的传递,如果没有这个身份,就是后台数据向前端传递,代码如下:

    其实我们在这个项目中还是使用到了Workerman对于数据库的操作,其实官方文档写的很详细了。基本上数据库常用到的操作都有相应的代码。如下图的插入举例:

    在项目中遇到的问题,前端主要是vue的渲染问题。因为速度要达到20秒2000条数据的处理。之前遇到太卡和进度条不显示的问题点,全部都是因为set视图造成的。自己的写法不是很好,导致消耗太大。

    其实前端主要就是根据返回的数据进行状态的更新,这正是vue的一大特点。实时更新。

    后端遇到的问题主要是黏包和断包的问题:

    我们对代码的处理如下:

    当代码改为上述的时候依然还是会出现问题:部署上线出现断包的情况。

     

    到这个时候代码才是完整的解析了数据。

    部署上线的大致思考如下:其实很多时候,我们对项目的流程用图表梳理一下,思路就会清除很多。

    后续项目遇到了,在tcp的文件中,当跟单系统的c语言哪里给我们数据过来,我们需要对数据的状态进行更新和插入数据库的操作,导致很耗时。 这里后续本想做成异步来处理。一直没有时间来处理。后来想了想如果是swoole的协程,或者task来处理,或许会更加的提升效率。所以我们也看出swoole4后对异步处理的性能提升大大好于workerman。希望这个项目的分享能给做高并发的人一些启发。共勉.......

     

     

     

    展开全文
  • 9在此基础上,实现了智能看护床。
  • SmartBed-Workerman-AngularJS-master_php_php智能_workerman_mqtt_高并发物联_源码.rar
  • https://blog.csdn.net/u014220105/article/details/84849570 可先参考相关描述,epoll实现tcp百万级高并发测试,代码仅用于测试和功能验证,并不是特别完善,不喜勿喷,欢迎指导
  • workerman 压力测试, 支持高并发压力测试, 支持各种数据自定义测试.
  • workerman

    2019-12-02 20:55:31
    1.Workerman是什么? Workerman是一款纯PHP开发的开源性能的...Workerman每个进程能维持上万并发连接。由于本身常住内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP、UNIXSOCK...

    1.Workerman是什么?

      Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。

      实际上Workerman类似一个PHP版本的nginx,核心也是多进程+Epoll+非阻塞IO。Workerman每个进程能维持上万并发连接。由于本身常住内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP、UNIXSOCKET,支持长连接,支持Websocket、HTTP、WSS、HTTPS等通讯协以及各种自定义协议。拥有定时器、异步socket客户端、异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。

    2.Workerman的一些应用方向

    1、即时通讯类:例如网页即时聊天、即时消息推送、微信小程序、手机app消息推送、PC软件消息推送等等;

    2、物联网类:例如Workerman与打印机通讯、与单片机通讯、智能手环、智能家居、共享单车等等;

    3、游戏服务器类:例如棋牌游戏、MMORPG游戏等等;

    4、SOA服务化:利用Workerman将现有业务不同功能单元封装起来,以服务的形式对外提供统一的接口,达到系统松耦合、易维护、高可用、易伸缩。

    5、其它服务器软件:例如 GatewayWorkerPHPSocket.IOhttp代理sock5代理分布式通讯组件分布式变量共享组件消息队列、DNS服务器、WebServer、CDN服务器、FTP服务器等等;

    6、中间件:例如异步MySQL组件异步redis组件异步http组件异步消息队列组件异步dns组件文件监控组件,还有很多第三方开发的组件框架等等。

    3.Workerman的理念

    极简、稳定、高性能、分布式。

     

    展开全文
  • 目录 0x00 定制通讯协议 0x02 Channel 分布式通讯组件 原理 #demo 0x03 心跳检测 ...0x03 workerman 命令行 ...0x04 workerman 开发注意事项 ...例如:我们自己要定义一个协议Json ,数据格式采用...namespace Workerman\

    目录

    0x00 定制通讯协议

    0x02 Channel 分布式通讯组件

    原理

    #demo

    0x03 心跳检测

    0x03 workerman 命令行

    0x04 workerman 开发注意事项

    linux内核优化:

    打开文件数


    0x00 定制通讯协议

    数据边界的标识:例如http协议头中的\r\n\r\n 就是数据边界的标识

    例如:我们自己要定义一个协议Json ,数据格式采用json,数据边界的标识采用\n

    <?php
    
    namespace Workerman\Protocols;
    
    class Json{
        public static function input($buffer){
           $pos = strpos($buffer,"\n");
           if(!$pos){
               return 0;
           }
           return $pos+1; 
        }
        public static function encode($buffer){
            return json_encode($buffer)."\n";
        }
        public static function decode($buffer){
            return json_decode(trim($buffer),true);
        }
    }

    <?php
    
    require_once 'Workerman/Autoloader.php';
    use Workerman\Worker;
    
    $worker = new Worker('json://0.0.0.0:3333');
    $worker->onConnect = function($connection){
        $connection->send(['status'=>'success']);
    };
    $worker->onMessage = function($connection,$data){
        var_dump($data);
    };
    Worker::runAll();

    0x02 Channel 分布式通讯组件

    下载channel:https://github.com/walkor/channel

    原理

    Channel包含Channel/Server服务端和Channel/Client客户端

    Channel/Client通过connect接口连接Channel/Server并保持长连接

    Channel/Client通过调用on接口告诉Channel/Server自己关注哪些事件,并注册事件回调函数(回调发生在Channel/Client所在进程中)

    Channel/Client通过publish接口向Channel/Server发布某个事件及事件相关的数据

    Channel/Server接收事件及数据后会分发给关注这个事件的Channel/Client

    Channel/Client收到事件及数据后触发on接口设置的回调

    Channel/Client只会收到自己关注事件并触发回调

    #demo

    channel_server.php

    <?php
    /*
     * @Author: your name
     * @Date: 2020-09-10 19:53:34
     * @LastEditTime: 2020-09-10 19:59:28
     * @LastEditors: Please set LastEditors
     * @Description: In User Settings Edit
     * @FilePath: /websocket_demo/channel.php
     */
    require_once 'Workerman/Autoloader.php';
    require_once 'Channel/src/Server.php';
    use Workerman\Worker;
    use Channel\Server;
    $server = new Server('0.0.0.0',8880);
    
    Worker::runAll();
    

    channel_client.php

    <?php
    /*
     * @Author: your name
     * @Date: 2020-09-10 19:53:34
     * @LastEditTime: 2020-09-10 20:11:26
     * @LastEditors: Please set LastEditors
     * @Description: In User Settings Edit
     * @FilePath: /websocket_demo/channel.php
     */
    require_once 'Workerman/Autoloader.php';
    require_once 'Channel/src/Client.php';
    use Workerman\Worker;
    use Channel\Client;
    
    $worker = new Worker('text://0.0.0.0:7777');
    $worker->onWorkerStart = function ($worker){
        Client::connect('127.0.0.1',8880);
        Client::on('broadcast',function($data)use($worker){
            foreach($worker->connections as $connection){
                $connection->send($data);
            }
        });
    };
    $worker->onMessage = function($connection,$data){
        Client::publish('broadcast',$data);
    };
    Worker::runAll();
    

    0x03 心跳检测

    实现原理:

    当服务器端的一个链接收到客户端发来的数据时,记录下该链接最后一次收到数据的时间

    然后设置一个定时器,每隔1秒就检查下所有链接最后一次 和 当前时间 之间的间隔是否超过 10秒,超过则断开。

    <?php
    /*
     * @Author: your name
     * @Date: 2020-09-10 21:01:33
     * @LastEditTime: 2020-09-10 21:19:20
     * @LastEditors: Please set LastEditors
     * @Description: In User Settings Edit
     * @FilePath: /websocket_demo/check_alive.php
     */
    require_once 'Workerman/Autoloader.php';
    require_once 'Workerman/Lib/Timer.php';
    use Workerman\Worker;
    use Workerman\Lib\Timer;
    
    $worker = new Worker('text://0.0.0.0:8880');
    $worker->onMessage = function($connection,$data){
        $connection->lastMessageTime = time();
    };
    $worker->onWorkerStart = function($worker){
        Timer::add(1,function()use($worker){
            $now_time = time();
            foreach($worker->connections as $connection){
                if(empty($connection->lastMessageTime)){
                    $connection->lastMessageTime = $now_time;
                }
                if($now_time - $connection->lastMessageTime > 10){
                    $connection->close("长时间未通讯,连接已断开");
                }
            }
        });
    };
    Worker::runAll();

    0x03 workerman 命令行

    0x04 workerman 开发注意事项

    linux内核优化:

    为了让系统能够支持更大的并发,除了必须安装event扩展(或libevent扩展)之外,优化linux内核也是重中之重,以下优化每一项都非常非常重要,请务必按逐一完成。

    打开文件 /etc/sysctl.conf,增加以下设置

    #该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除
    net.ipv4.tcp_max_tw_buckets = 20000
    #定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数
    net.core.somaxconn = 65535
    #对于还未获得对方确认的连接请求,可保存在队列中的最大数目
    net.ipv4.tcp_max_syn_backlog = 262144
    #在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
    net.core.netdev_max_backlog = 30000
    #能够更快地回收TIME-WAIT套接字。此选项会导致处于NAT网络的客户端超时,建议为0
    net.ipv4.tcp_tw_recycle = 0
    #系统所有进程一共可以打开的文件数量
    fs.file-max = 6815744
    #防火墙跟踪表的大小。注意:如果防火墙没开则会提示error: "net.netfilter.nf_conntrack_max" is an unknown key,忽略即可
    #net.netfilter.nf_conntrack_max = 2621440
    

    运行 sysctl -p即可生效。

    说明:

    /etc/sysctl.conf 可设置的选项很多,其它选项可以根据自己的环境需要进行设置

    打开文件数

    设置系统打开文件数设置,解决高并发下 too many open files 问题。此选项直接影响单个进程容纳的客户端连接数。

    Soft open files 是Linux系统参数,影响系统单个进程能够打开最大的文件句柄数量,这个值会影响到长连接应用如聊天中单个进程能够维持的用户连接数, 运行ulimit -n能看到这个参数值,如果是1024,就是代表单个进程只能同时最多只能维持1024甚至更少(因为有其它文件的句柄被打开)。如果开启4个进程维持用户连接,那么整个应用能够同时维持的连接数不会超过4*1024个,也就是说最多只能支持4x1024个用户在线可以增大这个设置以便服务能够维持更多的TCP连接。

    Soft open files 修改方法:

    (1)ulimit -HSn 102400

    这只是在当前终端有效,退出之后,open files 又变为默认值。

    (2)在/etc/profile文件末尾添加一行ulimit -HSn 102400,这样每次登录终端时,都会自动执行/etc/profile。

    (3)令修改open files的数值永久生效,则必须修改配置文件:/etc/security/limits.conf. 在这个文件后加上:

    * soft nofile 1024000
    * hard nofile 1024000
    root soft nofile 1024000
    root hard nofile 1024000
    

    这种方法需要重启机器才能生效。

    展开全文
  • workerman性能测试

    千次阅读 2015-12-24 17:15:59
    http://www.workerman.net/bench 测试环境: 系统:debian 6.0 64位 内存:64G cpu:ntel(R) Xeon(R) CPU...Workerman:开启200个Benchark进程 压测脚本:benchmark 业务:发送并返回hello字符串 业务逻辑 //

    http://www.workerman.net/bench

    测试环境:

    系统:debian 6.0 64位
    内存:64G
    cpu:ntel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz (2颗物理cpu,6核心,2线程)
    Workerman:开启200个Benchark进程
    压测脚本:benchmark
    业务:发送并返回hello字符串
    

    业务逻辑

    // HTTP协议返回hello字符串,非HTTP协议客户端发来什么就返回什么
    class Benchmark extends Man\Core\SocketWorker
    {
        // 分包
        public function dealInput($buffer)
        {
           return 0;
        }
        
        // HTTP协议返回hello字符串,非HTTP协议客户端发来什么就返回什么
        public function dealProcess($buffer)
        {
            // 是HTTP协议
            if('G' == $buffer[0] )
            {
                // http 改成短链接
                $this->isPersistentConnection = 0;
                return $this->sendToClient("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\nhello");
            }
            // 是benchmark脚本, 长链接
            $this->isPersistentConnection = 1;
            return $this->sendToClient($buffer);
        }
    } 
    

    压测方法

    方法一 ab软件(只能以HTTP协议压测workerman短连接性能):

    #例如下面的语句是模拟200个客户端向127.0.0.1:56789发送100000个HTTP请求
    ab -n 100000 -c200 127.0.0.1:56789/
    

    方法二:使用workerman自带的benchmark软件,只支持64位linux系统

    1、#例如下面的命令含义是400并发线程模拟400个并发用户,每个用户连接127.0.0.1:56789端口发送一个hello服务端收到hello后返回一个hello后断开连接,这样每个线程并发运行10000次
    ./benchmark -n10000 -h1 -c400 -p56789 127.0.0.1 
    2、#例如下面的命令含义是1000并发线程模拟1000个并发用户,每个用户连接127.0.0.1:56789端口,然后每个线程并发连续发送10000个hello,服务端收到hello后返回一个hello
    ./benchmark -n1 -h10000 -c1000 -p56789 127.0.0.1 
    

    结果

    普通PHP(版本5.3.10)压测

    短链接(每次请求完成后关闭链接,下次请求建立新的链接):
        脚本:./benchmark -n100000 -h1 -c500 -p56789 127.0.0.1
        含义: 压测脚本开500个并发线程模拟500个并发用户,每个线程链接Workerman 10W次,每次链接发送1个请求
        结果: 吞吐量:1.9W/S , cpu利用率:32%
    
    长链接(每次请求后不关闭链接,下次请求继续复用这个链接):
        脚本:./benchmark -n1 -h100000 -c2000 -p56789 127.0.0.1 
        含义: 压测脚本开2000个并发线程模拟2000个并发用户,每个线程链接Workerman 1次,每个链接发送10W请求
        结果: 吞吐量:36.7W/S , cpu利用率:69%
    
    内存:每个进程内存稳定在6444K,无内存泄漏
    

    HHVM环境压测

    短链接(每次请求完成后关闭链接,下次请求建立新的链接):
        脚本:./benchmark -n100000 -h1 -c1000 -p56789 127.0.0.1
        含义: 压测脚本开1000个并发线程模拟1000个并发用户,每个线程链接Workerman 10W次,每次链接发送1个请求
        结果: 吞吐量:3.5W/S , cpu利用率:35%
    
    长链接(每次请求后不关闭链接,下次请求继续复用这个链接):
        脚本:./benchmark -n1 -h100000 -c6000 -p56789 127.0.0.1 
        脚本: 压测脚本开6000个并发线程模拟6000个并发用户,每个线程链接Workerman 1次,每个链接发送10W请求
        结果: 吞吐量:45W/S , cpu利用率:67%
    
    内存:HHVM环境每个进程内存稳定在46M,无内存泄漏
    
    无流量抖动,无内存泄漏,性能非常强悍

    压测代码及脚本下载:

    
    压测代码及脚本:https://github.com/walkor/workerman-bench
    压测脚本benchmark位置:workerman-bench/applications/Benchmark/benchmark
    说明:由于各个系统配置不同,所以压测时可能需要根据系统配置调整压测参数才能达到最优
    

    压测评价

        压力测试脚本和workerman服务端运行在同一台服务器上,因为压测的地址均为为127.0.0.1,所以流量没有走网卡。压测使用的是版本较低的PHP5.3.10版本,使用高版本PHP如PHP5.6性能将会更高,压测成绩也将会更好。
        另外也压测了facebook的HHVM虚拟机,在短连接方面相比PHP5.3.10吞吐量高出84%左右,在长连接方面比PHP5.3.10吞吐量高出25%左右,期待HHVM后续新版本会有更加出色的成绩。
        压测均使用较小的数据包,并且业务逻辑简单,复杂的业务压力测试开发者可以根据自己的业务情况自行实施,肯定也会给开发者一个大大的惊喜。
    

    为什么workerman拥有卓越的性能

    避免读取磁盘和反复编译

    workerman运行过程中,单个进程生命周期内只要PHP文件被载入编译过一次,便会常驻内存,不会再去从磁盘读取或者再去编译。 workerman省去了重复的请求初始化、创建执行环境、词法解析、语法解析、编译生成opcode以及请求关闭等诸多耗时的步骤。 实际上workerman运行起来后便几乎没有磁盘IO及PHP文件编译开销,剩下的只是简单的计算过程,这使得workerman运行飞快。

    数据或者资源可以全局共享

    workerman中多个请求是可以共享数据或者资源的,当前请求产生的全局变量或者类的静态成员在下一次请求中仍然有效。 这对于减少开销,提高运行效率非常有用。例如业务只要初始化一次数据库连接,那么全局都可以共享这个连接,这实现了真正意义上的数据库长连接。 从而不必每次用户请求都去创建新的连接,避免了连接时三次握手、连接后权限验证以及断开连接时四次挥手等耗时的交互过程。不仅数据库,像redis、 memcache等同样有效。少了这些开销和网络交互,使得workerman运行更快。

    没有多余的网络开销

    传统PHP应用程序需要借助apache、nginx等容器才能对外提供网络服务,这就导致多了一层apache、nginx等容器到PHP进程的数据传输开销。 并且由于运行了apache或者nginx容器,这将进一步消耗服务器的资源。 workerman便没有这部分开销,这是由于workerman自身便是一个服务器容器具有PHP进程管理以及网络通讯功能, 完全不依赖于apache、nginx、php-fpm等这些容器便可以独立运行,所以性能更高。

    进程模型简单

    workerman是多进程(也有多线程版本)的,可以充分利用服务器多核资源。并且workerman具有简单的进程模型,主进程只负责监控子进程,而每个子进程独自接受维护客户端的连接,独自读取连接上发来的数据,独自处理。 子进程间默认没有任何数据通讯,主进程和子进程之间只有一次信号通讯。简单的进程通讯模型使得workerman相比其它复杂的进程模型的软件更高效。

    展开全文
  • 这些Web服务器可以很廉价,因为只要数量足够多,那么就能够将分到每个Web服务器上的访问量变得很少,这就是Web集群解决高并发的方式。关于Web集群的架构、配置在第六章会有实际介绍。 如果使用Web集群,则涉及到...
  • 解决问题的一种方案是:对比发现传统PHP运行方式是并发性差的“病原”,于是采用Swoole、Workerman异步高并发Socket网络库,或者甚至选用并发性更好的Node.Js、Erlang重构网站。这些方法产生新问题在于,当原有系统...
  • 使用libevent事件事件库,支持高并发 支持文件更新检测及自动加载 支持服务平滑重启 支持长连接 支持以指定用户运行worker进程 所需环境 workerman需要PHP版本不低于5.3,只需要安装PHP的Cli即可以,无需安装PHP-FPM...
  • Workerman-master.zip

    2020-04-15 14:12:06
    支持libevent事件轮询库,支持高并发 默认使用Websocket协议,更小带宽,更好性能 支持分布式部署,可横向扩容 客户端跨浏览器支持(需要浏览器支持html5或者flash) 多房间支持 支持私聊 支持心跳检测 同样非常适合...
  • 使用libevent事件轮询库,支持高并发 支持文件更新检测及自动加载 支持服务平滑重启 支持telnet远程控制及监控 支持异常监控及告警 支持长连接 支持以指定用户运行worker进程 所需环境 workerman需要PHP版本不低于...
  • workerman 实现 websocket

    千次阅读 2019-01-22 18:04:01
    PHP使用workerman框架的websocket, 实现机器扫码检票, 异步刷新小程序页面的票状态. 首先,需要小程序前端页面使用openid作为标志(代码里是$uid)连接websocketServer 然后, 检票接口做完检票逻辑后, 将结果通过...
  • Workerman的使用

    2021-09-24 16:23:18
    Workerman是一款纯PHP开发的开源性能的PHP socket 服务框架。 Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的socket服务框架,你可以用它开发tcp代理、梯子代理、做游戏服务器、邮件服务器...
  • 序言 Workerman性能socket服务框架 Workerman是什么? ...Workerman每个进程能维持上万并发连接。由于本身常住内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP
  • Workerman

    千次阅读 2015-06-16 16:36:41
    Workerman是一款纯PHP开发的开源的性能的PHP socket 异步框架。被广泛的用于移动通讯、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。 支持Websocket、...
  • 支持高并发、超高稳定性,广泛应用于手机APP、移动通信、微信小程序、手游服务器、网络游戏、PHP聊天室、硬件通信、智能家居、车联网、物联网等领域发展。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义...
  • Workerman 是一个性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、游戏服务器等。...
  • swoole介绍swoole是PHP的一个扩展。 简单理解:swoole=异步I/O+... swoole如何处理高并发①Reactor模型介绍 IO复用异步非阻塞程序使用经典的Reactor模型,Reactor顾名思义就是反应堆的意思,它本身不处理任何数据收...
  • workerman学习笔记

    2020-09-02 22:22:02
    此篇摘抄自网官,详情请参照workerman官网手册 workerman 安装环境 操作系统 windows环境有诸多限制,最好使用linux环境。 插件扩展 pcntl扩展 WorkerMan用到了其进程创建、信号控制、定时器、进程状态监控等...
  • workerman是一个性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库, PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。 ...
  • workerman介绍以及worker类使用

    千次阅读 2019-04-25 14:49:36
    支持高并发,超高稳定性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持...
  • 深度了解Workerman

    2019-04-02 11:02:55
    workerman是一个性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。...
  • Workerman性能socket服务框架 Workerman是什么? Workerman是一款纯PHP开发的开源性能的PHP socket 服务框架。 Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的socket服务框架,你...
  • workerman 一 介绍

    千次阅读 2018-08-28 10:09:25
    use Workerman\Worker; require_once './Workerman/Autoloader.php'; // 创建一个Worker监听2346端口,使用websocket协议通讯 $ws_worker = new Worker("websocket://0.0.0.0:2346"); // 启动4个进程...
  • workerman的基本用法(示例详解)

    千次阅读 2020-01-08 21:46:42
    Workerman是一个异步事件驱动的PHP框架,具有性能,可轻松构建快速,可扩展的网络应用程序。支持HTTP,Websocket,SSL和其他自定义协议。支持libevent,HHVM,ReactPHP。 我的官方群点击此处。 要求 PHP 5.3或...
  • 使用workerman实现在线聊天的方法

    千次阅读 2020-01-08 21:45:31
    1.下载最新版本的workerman 可以去http://www.workerman.net去下载 我这里将service 和 client 分开了两个文件夹,方便管理 客户端: 客户端就简单了。一个简单的html代码。嵌入了一个 websocket 监听服务 .....

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 341
精华内容 136
关键字:

workerman高并发