杜郎俊赏 - dujun.io

开源实例之webman

前言

本篇是对《开源实例之多项目部署方案》中 webman 部分的展开。

webman的介绍

webman是一款基于workerman开发的高性能HTTP服务框架。webman用于替代传统的php-fpm架构,提供超高性能可扩展的HTTP服务。你可以用webman开发网站,也可以开发HTTP接口或者微服务。

除此之外,webman还支持自定义进程,可以做workerman能做的任何事情,例如websocket服务、物联网、游戏、TCP服务、UDP服务、unix socket服务等等。

官网地址:https://www.workerman.net/webman

webman的理念

以最小内核提供最大的扩展性与最强的性能。

webman仅提供最核心的功能(路由、中间件、session、自定义进程接口)。其余功能全部复用composer生态,这意味着你可以在webman里使用最熟悉的功能组件,例如在数据库方面开发者可以选择使用Laravel的illuminate/database,也可以是ThinkPHP的ThinkORM,还可以是其它组件如Medoo。在webman里集成他们是非常容易的事情。

webman的优点

* 高稳定性。webman基于workerman开发,workerman一直是业界bug极少的高稳定性socket框架。
* 超高性能。webman性能高于传统php-fpm框架10-100倍左右,比go的gin echo等框架性能高一倍左右。
* 高复用。无需修改,可以复用绝大部分composer组件及类库。
* 高扩展性。支持自定义进程,可以做workerman能做的任何事情。
* 超级简单易用,学习成本极低,代码书写与传统框架没有区别。
* 使用最为宽松友好的MIT开源协议。

webman的安装

webman 可以通过 composer 安装:

composer create-project workerman/webman yourproject

webman的注意事项

与 php-fpm 的运行方式不同,webman 常驻内存,所以需要留意垃圾回收的问题,比如静态变量不能无限增加,需要有销毁机制。

webman的应用

本系列实例的容器调度是基于 webman 框架实现的。选择它的最大原因就是 webman 由 php cli 驱动。

容器调度的核心就是检测容器运行状态、销毁容器、生成容器。Docker 需要 root 执行,sudo 执行 webman,就解决了 php 执行相关命令的权限问题。启动后台服务仅一条命令:

sudo php /wwwroot/example/start.php start -d

后记

题图:秀人网 No.5890 甜仔

体验更多实例

标签: 开源实例
日期:2022-12-12