都来说一说,用Workerman/Webman开发需要特别注意的事项,方便大家快速排坑

wasoncheung

折腾了很久了也经历了很多线上和开发上遇到的各种坑,下面来说说需要特别注意的地方,欢迎大家留言补充。

Composer包的引入

问题:很多包并不适用,我就在生产的时候遇到过这样一个问题

  $this->app->setRuntimePath($this->app->getRuntimePath() . $appName . DIRECTORY_SEPARATOR);

看出问题在哪里了吗? 这是一个中间件模块。这句代码会导致你的应用内存无限增大直到溢出和崩溃。但是生产环境下,这种影响是不可预估的。类似的语句我在很多地方都看到过。这并不是一个错误。它只是不适合在非传统模式下运行。

如何避免呢?

  1. 尽量引入大厂开发的组件 比如 laravel,symfony。
  2. 不了解的组件,不要使用单例,而是在需要的时候直接new

异常现场的捕获

对可能发生的异常,捕获处理。
特别是使用timer等workerman组件,内部最好裹上一层try{}catch{},不然一次异常就有可能导致整个程序崩溃。

开发时的建议

  1. 避免使用低版本的php
  2. 使用参数的类型。尽量使用单一参数类型。

.... 后续补充

希望workerman发展越来越好。

1843 1 0
1个评论

xiaoming

$this->app->setRuntimePath($this->app->getRuntimePath() . $appName . DIRECTORY_SEPARATOR);
这个没办法一眼看出来

  • 暂无评论

wasoncheung

1070
积分
0
获赞数
0
粉丝数
2022-11-15 加入
🔝