swoole 订阅
Swoole是一个面向生产环境的 PHP 异步网络通信引擎,使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升。 [1] 展开全文
Swoole是一个面向生产环境的 PHP 异步网络通信引擎,使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升。 [1]
信息
特    点
可以在很短的时间内完成
类    别
面向生产环境的PHP异步网络通信引擎
运行环境
Linux Windows Mac FreeBSD Unix
中文名
Swoole
性    质
一种PHP高级Web开发框架
目    的
提升网站的开发效率
Swoole简介
Swoole不是一个像Zend Framework、CakePHP、Yii、symfony、ThinkPHP等一样的框架,也不是一个像WordPress、Drupal、Discuz、UChome等开源产品看齐的项目。 Swoole的目标是向Java框架、Ruby On Rails、Python DjangoPylons等一流框架发起挑战。PHP版本支持:PHP5.3+支持的数据库:MS SQL Server、MySQL、IBM DB2、Oracle、Interbase 、SQLite、PostgreSQL、ODBC支持的运行方式:Web、Cli命令行脚本、PHP-GTK GUI。 [2] 
收起全文
精华内容
下载资源
问答
  • swoole

    2019-08-07 11:58:40
    本系统参考osgochina/Donkey...基于swoole的定时器程序,支持秒级处理. 异步多进程处理. 完全兼容crontab语法,且支持秒的配置. 去中心-多客户端模式,能够横向扩展. web界面管理,增删改查任务,完整的权限控制.
  • Swoole

    2019-12-02 16:05:34
    laravel-swoole easyswoole【推荐、框架】 swoft 【也不错】 laravel-s 【学院君有教程、插件】 hyperf 【也不错】 one laravoole mix easyswoole、hyperf、mixphp 这些都是基于 Swoole 的框架,而 TP5、...

    laravel-swoole

    easyswoole 【推荐、框架】

    swoft  【也不错】

    laravel-s   【学院君有教程、插件】

    hyperf   【也不错】

    one

    laravoole

    mix

     

    easyswoole、hyperf、mixphp 这些都是基于 Swoole 的框架,而 TP5、Laravel、Yii 这些是基于 PHP-FPM 的框架,但是上面有些是laravel的扩展包。

     

    webim  【网页即时聊天工具,swoole创作者韩天峰写的】

    SPF (Swoole PHP Framework)【世界第一款基于Swoole扩展的PHP框架,开发者是Swoole创始人】

    展开全文
  • Swoole Swoole is an event-driven asynchronous & coroutine-based concurrency networking communication engine with high performance written in C++ for PHP. ✨Event-based The network layer in ...
  • Swoole中文文档 全量MarkDown版本 简介 PHP的异步,并行,高效网络通信引擎,使用纯C语言,提供,, , ,, ,,,,。Swoole内置了/, /。 Swoole底层内置了异步非阻塞,多线程的网络IO服务器.PHP程序员仅需处理...
  • swoole文档

    2018-02-27 11:59:40
    swoole 文档,方便开发者查询~~~~~~~~~~~~~~ swoole 文档,方便开发者查询
  • 初识SwooleSwoole官网:https://www.swoole.com/Swoole官方文档:https://wiki.swoole.com/ 预备相关知识素材推荐入门书籍:《tcp/ip网络编程(尹圣雨 韩)》。深入书籍:《unix环境高级编程(中文第三版)》;《unix...

    5f5f03731ad0c08a0b9f4105a1d8dad5.png

    初识Swoole

    Swoole官网https://www.swoole.com/

    Swoole官方文档:https://wiki.swoole.com/       

    预备相关知识素材推荐

    • 入门书籍:《tcp/ip网络编程(尹圣雨 韩)》。
    • 深入书籍:《unix环境高级编程(中文第三版)》;《unix网络编程卷1:套接字联网》;《unix网络编程卷2:进程间通信》。
    版本
    已更新至4.3.x。swoole2.0增加协程。swoole3.0以上版本要求php>=7.0。
    开发辅助工具Swoole 4.X速查表:https://toxmc.github.io/swoole-cs.github.io/ide提示工具:https://github.com/swoole/ide-helper这2个工具挺实用的,截图如下:531d27fd36d9a6a6f5a1f2a72a2e1ff7.png IDE helper包下载后放进任意目录,然后IDE include path即可。

    27f8b361d4e2ef6a8f3b97cba0ef643f.png

    Swoole入门指引

    fe2cf4f7733bff28016ceac063e8798a.png
    swoole底层是C写的。swoole系列函数可以理解为swoole提供给php的api,php通过swoole系列函数调用swoole的api,来启动swoole服务、注册回调函数等,swoole的事件驱动来执行对应的回调函数。这完全区别于普通的php扩展只提供库函数,而对于swoole,php只是传递的作用,真正的程序控制权是swoole。
    学习swoole的基础知识linux是必须的。学习swoole需要对进程、线程、异步同步、IO复用、reactor模型、进程间通讯、信号等概念有所了解,可学习《tcp/ip网络编程》这本书做简单的理解,通过php对应的扩展,借鉴workman源码来理解机制,这样会对swoole的学习有很大帮助。swoole并没有用libevent,所以不需要安装libevent。swoole并不依赖php的stream/sockets/pcntl/posix/sysvmsg等扩展
    libevent是一个事件驱动库,php有对应的event扩展,可帮助理解swoole的io复用和事件机制。
    stream/sockets是网络通讯的工具、可帮助理解swoole的tcp/udp/http。
    pcntl/posix是进程控制扩展,可帮助理解swoole中的多进程、进程间通讯。
    sysvmsg消息队列,可帮助理解swoole中的task模块。
     Swoole提供的功能库swoole提供了哪些功能给我们用,以为我们用到哪些服务时,可以用swoole来帮我们实现。
    • http服务 ,编写一个简单的web server。
    • TCP/UDP服务 ,编写一个消息接受处理系统。
    • 异步,可以异步的处理请求。
    • 并发 ,可以并发的处理同一个业务逻辑。
    • socket,socket通讯处理技术。
    • 毫秒级别定时器,可以在php中使用定时器了。
    • 协程,相比线程更稳定和好用。
    如果你的业务中,有用到以上等特性,你又在用使用php,那么完全可以用swoole来完成了,再具体点的场景如下:    1、互联网;    2、移动通信;   3、企业软件;   4、云计算;   5、网络游戏;   6、物联网(IOT);   7、车联网;   8、智能家居等领域 Swoole的框架Swoft 首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM,全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield, 有类似 Go 语言的协程、灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等,可以用于构建高性能的Web系统、API、中间件、基础服务等等。 EasySwoole EasySwoole 是一款基于Swoole Server 开发的常驻内存型PHP框架,专为API而生,摆脱传统PHP运行模式在进程唤起和文件加载上带来的性能损失。EasySwoole 高度封装了Swoole Server 而依旧维持Swoole Server 原有特性,支持同时混合监听HTTP、自定义TCP、UDP协议,让开发者以最低的学习成本和精力编写出多进程,可异步,高可用的应用服务。SwooleDistributed SwooleDistributed 老牌Swoole框架拥有最完善的开发工具以及最强大的功能,首创SDHelper开发者工具包和开发者调试命令集,可以进行单元测试,捕获客户端流量分析,可视化的进行远程断点联调,还具备代码覆盖率检测的功能(swoole与xdebug扩展不兼容,SDHelper无需xdebug扩展),并且内置组件极其丰富(类MQTT强悍的订阅发布/Actor模型/内存高速缓存/事件派发/进程管理/定时任务/AMQP任务调度/后台监控/集群/微服务/RPC/异步连接池/自定义命令等等),开发者可以直接使用加快开发进度。几乎所有的功能都支持集群化,单机切换到集群无需对代码做任何的修改。如果业务开发比较复杂比如(游戏开发)那么SD框架将是你的不二之选。

    swoole进程结构

    882fd519202447d98bc1faeee40264d3.png
    • Master主进程
    • manager管理进程
    • worker子进程
    • task任务进程
    • MainReactor主线程
    • reactor线程组
    Swoole的进程/线程模型3c57b2538d72ceda0f4f4b75625f6fe6.pngSwoole程序的执行流程fef187538b04b419973ee2bdc5bb79d3.png

    来源:https://blog.csdn.net/yan_dk/article/details/89445254

    4f8deed3dc36ca7c0162d4733df8cacd.png407cabfe1febd238d5442af24922ff71.gif3d78f659e1f813ea6d67df9b37f1b190.png9973735c361afa23d9be389e1ab0d492.gif关注  架构师学习路线  升职涨薪不是梦
    展开全文
  • FastD旋风 高端网络服务组件。提供一流的服务封装,基础管理及客户端调用功能。使用composer进行管理,可在此基础上进行封装整合。...服务继承FastD\Swoole\Server ,实现doWork方法,服务器在接收信息onRe
  • swoole-swoole-v1.9.19.zip

    2021-01-22 15:14:21
    PHP swoole 扩展
  • swoole-了解swoole

    2019-03-28 12:59:51
    什么是swoole swoole是php的异步、并行、高性能网络通信引擎。使用纯C/c++语言编写,提供了php语言的异步多线程服务器。 swoole内置了http/websocket服务器端/客户端、http2.0服务器端。 异步tcp/udp网络客户端,...

    初识swoole

    swoole官网https://www.swoole.com/

    可能需要掌握一些tcp/ip

    • 入门书籍:《tcp/ip网络编程(尹圣雨 韩)》。
    • 深入书籍:《unix环境高级编程(中文第三版)》;《unix网络编程卷1:套接字联网》;《unix网络编程卷2:进程间通信》。

    题外话
    swoole补充了对比其他语言没有的网络编程库,紧接着学习swoft框架,微服务。最后通过swoole可以进一步学习go语言。

    swoole vs workman
    swoole是C语言编写,不依靠php的扩展。workman依赖php的扩展。swoole的特性更丰富、稳定性好一些,但workman可以用来了解背后的基本原理。

    基于swoole扩展的框架

    • swoft 社区比较活跃
    • easyswoole 相对简单 轻量级
    • swooleDistributed

    传统框架和swoole框架
    swoole框架在性能方面比传统框架要高很多,没有性能要求则使用传统框架。

    版本
    已更新至4.3。swoole2.0增加协程。swoole3.0以上版本要求php>=7.0。

    开发工具
    在这里插入图片描述
    这两个还是蛮实用的。
    在这里插入图片描述
    IDE helper包下载后放进任意目录,然后IDE include path即可。
    在这里插入图片描述
    学习swoole 的注意事项

    • swoole一般是linux环境。
    • 阿里云安全组开放协议、端口。服务器如有防火墙,开放端口。

    一些概念

    swoole入门指引
    在这里插入图片描述

    swoole底层是C写的。swoole系列函数可以理解为swoole提供给php的api,php通过swoole系列函数调用swoole的api,来启动swoole服务、注册回调函数等,swoole的事件驱动来执行对应的回调函数。这完全区别于普通的php扩展只提供库函数,而对于swoole,php只是传递的作用,真正的程序控制权是swoole。

    学习swoole的基础知识
    在这里插入图片描述

    linux是必须的。学习swoole需要对进程线程、异步同步、IO复用、reactor模型、进程间通讯、信号等概念有所了解,可学习《tcp/ip网络编程》这本书做简单的理解,通过php对应的扩展,借鉴workman源码来理解机制,这样会对swoole的学习有很大帮助。

    swoole的实现
    手册

    swoole并没有用libevent,所以不需要安装libevent。swoole并不依赖php的stream/sockets/pcntl/posix/sysvmsg等扩展

    libevent是一个事件驱动库,php有对应的event扩展,可帮助理解swoole的io复用和事件机制。
    stream/sockets是网络通讯的工具、可帮助理解swoole的tcp/udp/http。
    pcntl/posix是进程控制扩展,可帮助理解swoole中的多进程、进程间通讯。
    sysvmsg消息队列,可帮助理解swoole中的task模块。

    swoole进程结构
    在这里插入图片描述

    • Master主进程
    • manager管理进程
    • worker子进程
    • task任务进程
    • MainReactor主线程
    • reactor线程组

    Swoole的进程/线程模型:
    在这里插入图片描述
    Swoole程序的执行流程:
    在这里插入图片描述
    这里暂不介绍了,接下来会逐渐涉及。

    Server部分文档概述

    swoole我也是初学,理解不到位的请谅解。

    整体
    在这里插入图片描述

    从server入手

    在这里插入图片描述
    函数列表
    在这里插入图片描述
    这里的意思是$server对象可以调用的函数,接下来理解下这部分。
    比如我们用__construct先创建一个$server

    $server = new Server(
    string $host, //监听的Ip地址,通常为0.0.0.0,监听所有ip地址
    int $port = 0, //端口
    int $mode = SWOOLE_PROCESS,//默认多进程模式
    int $sock_type = SWOOLE_SOCK_TCP);//TCP UDP 默认TCP
    
    // 创建server
    $server=new Swoole\Server("0.0.0.0",6001);
    

    那么函数列表里的函数,是$server调用的。
    可能在外层调用:

    1) server :: __construct 构造函数 创建一个tcp/udp服务器
    $server=new Swoole\Server("0.0.0.0",6001);
    
    2)server->set 为服务器配置选项
    $server->set([
    		'worker_num'=>1, //子进程数量
    	]);
    
    3)server->on 注册事件
    $server->on('connect',function(){
    	echo "new connect!".PHP_EOL;
    });
    
    $server->on('receive',function(){
    	echo "new message received!".PHP_EOL;
    });
    
    $server->on('close',function(){
    	echo "one client closed!".PHP_EOL;
    });
    
    4)server->start 启动服务器
    $server->start();
    

    也可能在回调中调用:server->send server->close

    $server->on('receive',function($server, $fd){
    	$server->send($fd, 'Swoole: '.$data);
        $server->close($fd);
    });
    

    总之函数下的所有函数是$server调用的。

    属性列表
    在这里插入图片描述
    这个没什么好说的,获取配置项,获取主进程pid,获取当前子进程编号id等等。

    配置选项
    在这里插入图片描述
    配置选项在server->set函数中设置,比如设置子进程数量:

    $server->set([
    		'worker_num'=>1,
    	]);
    

    以此类推,放进数组里即可。

    监听端口
    在这里插入图片描述
    监听端口是swoole支持多协议多端口,即一个服务器上(一个php文件代码上)可以支持多个协议的业务,可以监听多个端口,这就厉害了,不用另外创建一个单独的服务器(再写一个php脚本)。

    下面的可选参数,可选回调什么意思呢?
    比如监听一个新的端口:

    //主服务器 $server->
    $server=new Swoole\Server("0.0.0.0",6001);
    $server->set([
    		'worker_num'=>1,
    	]);
    $server->on('connect',function(){
    });
    $server->on('receive',function($server, $fd){
    });
    $server->on('close',function(){
    });
    	
    //监听一个新端口 注意下面都是$port1->
    $port1 = $server->listen("0.0.0.0", 9501, SWOOLE_SOCK_TCP);
    $port1->set([
     	//可选参数
    	]);
    	
    //可选回调
    $port1->on('connect',function(){
    });
    $port1>on('receive',function($server, $fd){
    });
    $port1->on('close',function(){
    });
    

    下面的port1,->set支持的参数,->on支持的回调,是有限制的。它和server不是平级的,也就是说有些参数和回调是server级别的。比如->set([‘worker_num’=>1])是server独有的配置参数,port1不能配置。哪些参数可以配置,哪些不可以配置,文档中有说明,需要注意这点。

    预定义常量
    在这里插入图片描述
    看看就好

    事件回调函数
    在这里插入图片描述
    事件回调函数是在server->on()中配置的。上边已有很多示例了,只需要各自了解使用场景就好。

    好了,整个server的大体已经了解完了

    展开全文
  • swoole2.0.9源代码下载,swoole是一个php扩展,下载后可以直接安装swoole
  • swoole-yaf, 结合swoole扩展和Yaf框架,使用swoole的内置http_server
  • easyswoole框架生命周期具体可参考核心代码文件:vendor/easyswoole/easyswoole/src/Core.php框架生命周期服务类型EASYSWOOLE_SERVER (对应Swoole\Server)EASYSWOOLE_WEB_SERVER (对应Swoole\Http\Server)EASYSWOOLE_...

    easyswoole框架生命周期

    具体可参考核心代码文件:vendor/easyswoole/easyswoole/src/Core.php

    框架生命周期

    服务类型

    EASYSWOOLE_SERVER (对应Swoole\Server)

    EASYSWOOLE_WEB_SERVER (对应Swoole\Http\Server)

    EASYSWOOLE_WEB_SOCKET_SERVER (对应Swoole\WebSocket\Server)

    easyswoole案例演示

    tcp请求:

    #在CliExample目录下执行 php TCPClient3.php

    服务端回复: 1557998515

    服务端回复: your args is:{"name":"\u4ed9\u58eb\u53ef"}

    #服务端内容响应:

    已连接

    tcp服务3 fd:3 发送消息:M{"controller":"Index","action":"index","param":{"name":"\u4ed9\u58eb\u53ef"}}

    tcp服务3 fd:3 发送消息:L{"controller":"Index","action":"args","param":{"name":"\u4ed9\u58eb\u53ef"}}

    tcp服务3 fd:3 已关闭

    服务端通过addListener开启9504端口监听,客户端通过$client->connect('127.0.0.1', 9504, 0.5)发起链接后发送数据。服务端通过\EasySwoole\Socket\Dispatcher->dispatch进行路由解析,并执行具体动作后将数据返回给客户端。

    http请求:

    #按照demo案例添加App/HttpController/Test.php,并访问以下函数

    function index()

    {

    $this->response()->write('test index');

    }

    # 访问 http://mytest.easyswoole.com/Test/index

    输出:test index

    压力测试:

    #硬件信息

    CPU:1核 Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz

    内存:1GB

    操作系统: Ubuntu / 16.04 LTS amd64 (64bit)

    # ab长连接压测swoole页面(ab -c 100 -n 100000 -k http://127.0.0.1:9501/Test/index)返回:

    Concurrency Level: 100

    Time taken for tests: 18.085 seconds

    Complete requests: 100000

    Failed requests: 0

    Keep-Alive requests: 100000

    Total transferred: 15500000 bytes

    HTML transferred: 1000000 bytes

    Requests per second: 5529.44 [#/sec] (mean)

    Time per request: 18.085 [ms] (mean)

    Time per request: 0.181 [ms] (mean, across all concurrent requests)

    Transfer rate: 836.98 [Kbytes/sec] receive

    #ab非长连接压测swoole页面(ab -c 100 -n 100000 http://127.0.0.1:9501/Test/index)返回:

    Concurrency Level: 100

    Time taken for tests: 46.141 seconds

    Complete requests: 100000

    Failed requests: 0

    Total transferred: 15000000 bytes

    HTML transferred: 1000000 bytes

    Requests per second: 2167.29 [#/sec] (mean)

    Time per request: 46.141 [ms] (mean)

    Time per request: 0.461 [ms] (mean, across all concurrent requests)

    Transfer rate: 317.47 [Kbytes/sec] received

    #ab长连接压测nginx页面(ab -c 100 -n 100000 -k http://127.0.0.1/test.php)返回:

    Concurrency Level: 100

    Time taken for tests: 36.257 seconds

    Complete requests: 100000

    Failed requests: 0

    Keep-Alive requests: 0

    Total transferred: 14700000 bytes

    HTML transferred: 1000000 bytes

    Requests per second: 2758.12 [#/sec] (mean)

    Time per request: 36.257 [ms] (mean)

    Time per request: 0.363 [ms] (mean, across all concurrent requests)

    Transfer rate: 395.94 [Kbytes/sec] received

    swoole页面的长连接比非长连接qps高出一半,nginx非长连接压测的qps比swoole非长连接压测的qps要高

    自定义进程

    #按照demo部署代码,并稍微调整EasySwooleEvent.php下函数mainServerCreate代码

    public static function mainServerCreate(EventRegister $register)

    {

    /**

    * 除了进程名,其余参数非必须

    */

    for($i=0;$i<3;$i++){

    $myProcess = new ProcessOne("processName".$i,$i,false,2,true);

    ServerManager::getInstance()->getSwooleServer()->addProcess($myProcess->getProcess());

    }

    }

    #稍微调整App/Process/ProcessOne.php代码

    public function run($arg)

    {

    Logger::getInstance()->console($this->getProcessName().'-'.$arg." start");

    while (1){

    \co::sleep(4-$arg);

    Logger::getInstance()->console($this->getProcessName().'-'.$arg." run");

    }

    }

    #查询执行的进程:

    root@instance-wjbdyzhe:/data/web/mytest.easyswoole.com# ps -aux|grep processName

    root 10288 0.0 0.0 14688 908 pts/0 S+ 20:53 0:00 grep --color=auto processName

    root 24261 0.0 1.2 232932 12308 pts/2 S+ 20:04 0:00 processName0

    root 24262 0.0 1.2 232932 12308 pts/2 S+ 20:04 0:00 processName1

    root 24263 0.0 1.2 232932 12308 pts/2 S+ 20:04 0:00 processName2

    #三个进程的执行结果:

    [2019-04-28 08:56:37][default]processName0-0 start

    [2019-04-28 08:56:37][default]processName2-2 start

    [2019-04-28 08:56:37][default]processName1-1 start

    [2019-04-28 08:56:39][default]processName2-2 run

    [2019-04-28 08:56:40][default]processName1-1 run

    [2019-04-28 08:56:41][default]processName0-0 run

    [2019-04-28 08:56:41][default]processName2-2 run

    [2019-04-28 08:56:43][default]processName1-1 run

    [2019-04-28 08:56:43][default]processName2-2 run

    可以看到以上代码及执行结果:执行程序后,创建了三个自定义进程,并且进程是并行执行的

    异步任务:

    #按照demo部署代码,并调整以下函数

    function multiTaskConcurrency(){

    // 多任务并发

    $tasks[] = function () { sleep(1);return 'this is 1'; }; // 任务1

    $tasks[] = function () { sleep(5);return 'this is 2'; }; // 任务2

    $tasks[] = function () { sleep(3);return 'this is 3'; }; // 任务3

    $results = \EasySwoole\EasySwoole\Swoole\Task\TaskManager::barrier($tasks, 6);

    var_dump($results);

    $this->response()->write('执行并发任务成功');

    }

    # 访问 http://mytest.easyswoole.com/index/multiTaskConcurrency

    输出:

    array(3) {

    [0]=>

    string(9) "this is 1"

    [2]=>

    string(9) "this is 3"

    [1]=>

    string(9) "this is 2"

    }

    由代码和打印来看,虽然任务2排在第二位,但由于执行时间长,执行结果排在最后,由此可知三个任务并非串行执行,而是并行执行

    连接池

    #最大进程配置数8个

    'SETTING' => [

    'worker_num' => 8,

    'max_request' => 5000,

    'task_worker_num' => 8,

    'task_max_request' => 1000,

    ],

    #每个进程连接池最大连接个数5个

    'REDIS' => [

    'host' => '127.0.0.1',

    'port' => '6379',

    'auth' => 'test',

    'POOL_MAX_NUM' => '5',

    'POOL_TIME_OUT' => 'utf8mb4',

    ],

    #jmeter压测配置

    线程数:100;ramp-up时间:10;循环次数:30

    #通过redis客户端查看链接信息:

    127.0.0.1:6379> info clients

    # Clients

    connected_clients:41

    client_recent_max_input_buffer:4

    client_recent_max_output_buffer:0

    blocked_clients:0

    理论最大redis链接数 = worker_num*POOL_MAX_NUM = 8*5 = 40

    并发压测客户端显示 = 41-1 = 40(多一个1实际为手动链接)

    只要不终止swoole/server服务客户端连接,显示一直为41,表示链接一直处于链接可用状态。

    #最大进程配置数8个

    'SETTING' => [

    'worker_num' => 8,

    'max_request' => 5000,

    'task_worker_num' => 8,

    'task_max_request' => 1000,

    ],

    #匿名连接池最大配置10个链接

    'MYSQL3' => [

    'host' => '127.0.0.1',//防止报错,就不切换数据库了

    'port' => '3306',

    'user' => 'root',

    'timeout' => '5',

    'charset' => 'utf8mb4',

    'password' => '123456',

    'database' => 'test',//防止报错,就不切换数据库了

    'POOL_MAX_NUM' => '10',

    'POOL_TIME_OUT' => '0.1'

    ],

    #jmeter压测配置

    线程数:100;ramp-up时间:10;循环次数:30

    #通过mysql查看链接个数

    mysql> show processlist;

    ……

    | 306155 | root | 172.17.0.1:48704 | test | Sleep | 30 | | NULL |

    | 306156 | root | 172.17.0.1:48840 | test | Sleep | 36 | | NULL |

    | 306157 | root | 172.17.0.1:48846 | test | Sleep | 29 | | NULL |

    +--------+------+------------------+------+---------+------+----------+------------------+

    81 rows in set (0.00 sec)

    理论最大mysql链接数 = worker_num*POOL_MAX_NUM = 8*10 = 80

    并发压测客户端显示 = 81-1 = 80(多一个1实际为手动链接)

    过一段再show processlist发现已无链接,可能mysql主动超时中断,有兴趣的同学可主动排查

    更多参考

    展开全文
  • Swoole】安装swoole

    2018-10-16 08:26:28
    yum install php-devel php-pear... wget https://github.com/swoole/swoole-src/archive/swoole-1.7.6-stable.tar.gz  tar -zxvf swoole-1.7.6-stable.tar.gz  cd swoole-src-swoole-1.7.6-stable  phpize  yu...
  • swoole-连接池

    2020-10-17 21:19:37
    swoole连接池,swoole连接池,swoole连接池,swoole连接池,swoole连接池,swoole连接池,swoole连接池~
  • yii2 swoole:让yii2运行在swoole上 , 运行在swoole上的yii2是运行在php-fpm上yii2的5倍以上
  • swoole websocket聊天

    2018-12-27 16:20:20
    swoole websocket聊天
  • swoole升级

    2020-05-06 16:44:35
    pecl upgrade swoole
  • swoole安装

    2020-08-03 20:52:47
    下载swoole安装包,我是在github上面下的,有多个版本,根据自己的php版本选择swoole版本,我是php7.2配置swoole4.3.3版本 https://github.com/swoole/swoole-src 【个人观点,不管swoole的压缩包在哪个目录下,关键...
  • swoole学习文档

    2019-03-28 09:32:58
    该文档详细介绍和总结swoole各知识点,帮助更快学习swoole
  • swoole扩展与swoole框架区别 swoole框架像PHP框架一样,适用于web开发。 而swoole扩展是提供了更底层的服务器通信机制,可以使用UDP、TCP等协议,而不仅仅是http。 swoole扩展像其它PHP扩展一样安装,可以用pecl,也...
  • swoole 安装

    2020-09-08 15:30:06
    首先进入swoole的github下载地址:https://github.com/swoole/swoole-src/releases 如果没有特殊需求,请选择最新版本开始下载(我这里是最新版是v4.4.16): 安装命令 wget ...
  • Swoole是一种PHP高级Web开发框架,框架不是为了提升网站的性能,是为了提升网站的开发效率。最少的性能损耗,换取最大的开发...利用Swoole框架,开发一个复杂的Web功能,可以在很短的时间内完成了。(easy-swoole.pdf)
  • 安装swoole 环境使用LNMP一键安装 略 LNMP安装了哪些软件?安装目录在哪? - LNMP一键安装包 https://lnmp.org/faq/lnmp-software-list.html 安装swoole 选择PECL安装: 1>pecl install swoole //如果以上步骤...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,602
精华内容 3,840
关键字:

swoole