详细问题
测试及结果
日期:2026-10-23。每阶段 16 个并发客户端,共 1,024 次 HTTP 请求:
首次并发加载 128 个合成 PHP 类,断言返回值的 SHA-256。
同时读取包内资源文件,断言内容 SHA-256。
对测试 worker 发 SIGKILL,确认主进程拉起替代 worker 后继续并发请求。
全部通过容器内 127.0.0.1 通信,--network=none,不暴露宿主端口。
产物 首次并发类加载 包内资源读取 worker 重启后
未压缩二进制,4 worker 1024/1024 1024/1024 1024/1024
TAR + gzip Phar(静态 CLI),4 worker 1023/1024 1019/1024 998/1024
TAR + gzip 二进制(UPX micro),4 worker 1011/1024 1002/1024 997/1024
TAR + gzip 二进制(UPX micro),1 worker 1024/1024 1024/1024 1024/1024
压缩组出现 worker 异常退出/重建,所以响应 PID 集合可能少于或多于配置的 worker 数,详细数据见后面的完整报告。测试同时要求 1,024 次请求内容正确及响应进程数符合预期,不能以 HTTP 服务仍能启动认定通过。
本轮错误摘录(均为合成应用/依赖代码,不含业务数据):
例如加载 Module12.php 却报告重复声明 Probe\Module78,提示读入内容与所请求文件不一致;这只是现象描述,不是对根因的确认。此前同版本本地构建运行时也曾复现,失败请求数会随调度变化。
https://github.com/webman-php/console/issues/57
ParseError: syntax error, unexpected string content "There is no existing die;" in phar:///out/tar-gzip/webman.phar.tar.gz/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:251
ParseError: syntax error, unexpected identifier "payload" in phar:///out/tar-gzip/webman.bin/vendor/workerman/webman-framework/src/Route.php:511
Fatal error: Cannot declare class Probe\Module78, because the name is already in use in phar:///out/tar-gzip/webman.bin/app/Probe/Module12.php on line 1
Fatal error: Cannot declare class Probe\Module101, because the name is already in use in phar:///out/tar-gzip/webman.bin/app/Probe/Module108.php on line 1
Fatal error: Cannot declare class Probe\Module125, because the name is already in use in phar:///out/tar-gzip/webman.bin/app/Probe/Module52.php on line 1
已经修复
请升级到 workerman/webman-framework v2.2.5 和 webman/console v2.3.0 后重新打包。