关于workerman:高性能-PHP-应用容器之-Workerman

介绍Workerman 是一款纯 PHP 开发的开源高性能的 PHP 利用容器。能够用它开发 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、异步音讯队列等泛滥高性能组件。 装置与操作设置阿里云镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/co... 装置 workerman composer require workerman/workerman 启动 调试模式php start.php start 守护过程模式php start.php start -d 进行 php start.php stop ...

May 28, 2022 · 2 min · jiezi

关于workerman:webman-框架简单体验

webman 是一款基于 workerman 开发的 http 服务框架,用于开发 web 站点或者 http 接口。反对路由、中间件、主动注入、多利用、自定义过程、无需更改间接兼容现有 composer 我的项目组件等诸多个性。具备学习成本低、简略易用、超高性能、超高稳定性等特点。https://www.workerman.net/doc...简略来说,webman 是基于 workerman 的一款常驻内存的 利用 服务框架,运行模式为多过程阻塞模式,IO模型必定是多路复用,至于是select/poll 还是 epoll 应该同 workerman 的场景统一,看是否装置了 event 扩大了(倡议装置,高并发下 epoll 模型更具劣势)。 尽管不像以后许多基于 swoole 的协程 或 相似 node/reactPHP 等 eventLoop 的异步非阻塞模式的框架,但基于 epoll 模型时,开 cpu 个 worker 单机 C10K 也没什太大鸭梨。 小课堂单过程模式一个服务过程,来一个申请就阻塞,解决期间回绝响应其余申请。1、开始期待以后申请网络IO实现。2、紧接着解决代码业务(期间可能也会随同着各种网络IO,你的业务网代码总不能只是 "hello world" 吧,数据库IO、文件IO、调用其余微服务的网络IO,都会产生阻塞)。3、发送响应结束。能够持续接管解决下一个申请。毛病:无奈承载高并发,你将会收到各种 502 响应。 多线程/协程模式一个主服务过程,来一个申请就创立一个线程去专用解决,线程专一解决负责的申请。相比单过程模式,能够承载较高的申请并发量,但创立和切换线程的开销也是很大的,还有死锁的问题(当初又有了协程,用户态线程,更加轻量级,还能够)。 IO多路复用模式IO 多路复用模式下,worker 过程在接管一个申请后,如果该申请还未就绪(内核还未实现 socket 数据的读取及未 copy 至用户态),那么 worker 是能够持续去接管其余申请的,当某申请的 socket 数据读取实现后,worker 便开始执行业务解决(留神:此阶段 worker 是被业务解决独占的,期间无奈解决其余申请)。业务解决实现,worker 被开释,复原最后的状态流程。select/poll 和 epoll 都是 IO多路复用,不同之处在于 epoll 采纳更敌对的告诉机制,select/poll 要被动的忙轮训来监测是否有已就绪的申请socket,epoll 则是期待内核的被动告诉。 ...

March 9, 2021 · 4 min · jiezi