自动加载

2025-05-24

利用composer加载PSR-0规范的文件 webman遵循PSR-4自动加载规范。如果你的业务需要加载PSR-0规范的代码库,参考以下操作。 新建 extend 目录用户存放PSR-0规范的代码库 编辑composer.json,在autoload下增加以下内容 "psr-0" : { "": "ext ...

详情...

监控进程

2025-05-24

webman自带一个monitor监控进程,它支持两个功能 监控文件更新并自动reload载入新的业务代码(一般在开发时使用) 监控所有进程占用内存,如果某个进程占用内存即将超过php.ini中memory_limit限制则自动安全重启该进程(不影响业务) 监控配置 配置文件 config/process.php ...

详情...

压力测试

2025-05-24

压测结果受到哪些因素影响? 压力机到服务器的网络延迟 (建议内网或本机压测) 压力机到服务器的带宽 (建议内网或本机压测) 是否开启HTTP keep-alive (建议开启) 并发数是否足够 (外网压测要尽量开启更大的并发) 服务端进程数是否合理 (helloworld业务进程数建议与cpu数相同,数据库业务进程数 ...

详情...

慢业务处理

2025-05-24

有时候我们需要处理慢业务,为了避免慢业务影响webman的其它请求处理,这些业务根据情况不同可以使用不同的处理方案。 方案一 使用消息队列 参考redis队列 stomp队列 优点 可以应对突发海量业务处理请求 缺点 无法直接返回结果给客户端。如需推送结果需要配合其它服务,例如使用 webman/push 推送处理结果 ...

详情...

业务初始化

2025-05-24

有时我们需要在进程启动后做一些业务初始化,这个初始化在进程生命周期只执行一次,例如进程启动后设置一个定时器,或者初始化数据库连接等。下面我们将对此进行讲解。 原理 根据 执行流程 中的说明,webman在进程启动后会加载config/bootstrap.php(包括config/plugin/*/*/bootstrap ...

详情...

内存泄漏

2025-05-24

webman是常驻内存框架,所以我们需要稍微关注下内存泄漏的情况。不过开发者不必过于担心,因为内存泄漏发生在非常极端的条件下,而且很容易规避。webman开发与传统框架开发体验基本一致,不必为内存管理做多余的操作。 提示 webman自带的monitor进程会监控所有进程内存使用情况,如果进程使用内存即将达到php. ...

详情...

生命周期

2025-05-24

进程生命周期 每个进程都有很长的生命周期 每个进程是独立运行的互不干扰的 每个进程在其生命周期内可以处理多个请求 进程在收到stop reload restart命令时会执行退出,结束本次生命周期 提示 每个进程都是独立互不干扰的,这意味着每个进程都维护着自己的资源、变量和类实例等,表现在每个进程都有自己的数据库 ...

详情...

执行流程

2025-05-23

进程启动流程 执行 php start.php start 后执行流程如下: 载入config/下的配置 设置Worker的相关配置如 pid_file stdout_file log_file max_package_size 等 创建webman进程,并监听端口(默认8787) 根据配置创建自定义进程 webma ...

详情...

nginx代理

2025-05-23

当webman需要直接提供外网访问时,建议在webman前增加一个nginx代理,这样有以下好处。 静态资源由nginx处理,让webman专注业务逻辑处理 让多个webman共用80、443端口,通过域名区分不同站点,实现单台服务器部署多个站点 能够实现php-fpm与webman架构共存 nginx代理ssl实现 ...

详情...

自定义404 500

2025-05-23

自定义404 如果你想动态控制404的内容时,例如在ajax请求时返回json数据 {"code:"404", "msg":"404 not found"},页面请求时返回app/view/404.html模版,请参考如下示例 以下以php原生模版为例,其它模版twig blade think-tmplate 原理类 ...

详情...

禁用函数检查

2025-05-23

使用这个脚本检查是否有禁用函数。命令行运行curl -Ss https://www.workerman.net/webman/check | php 如果有提示Functions 函数名 has be disabled. Please check disable_functions in php.ini说明webman ...

详情...

数据库事务

2025-05-23

webman使用数据库事务与其它框架是一样的,这里列举出需要注意的地方 代码结构 代码结构和其它框架是一样的,例如Laravel用法(think-orm类似) Db::beginTransaction(); try { // ..业务处理略... Db::commit(); } catch (\Thr ...

详情...