折腾了很久了也经历了很多线上和开发上遇到的各种坑,下面来说说需要特别注意的地方,欢迎大家留言补充。
问题:很多包并不适用,我就在生产的时候遇到过这样一个问题
$this->app->setRuntimePath($this->app->getRuntimePath() . $appName . DIRECTORY_SEPARATOR);
看出问题在哪里了吗? 这是一个中间件模块。这句代码会导致你的应用内存无限增大直到溢出和崩溃。但是生产环境下,这种影响是不可预估的。类似的语句我在很多地方都看到过。这并不是一个错误。它只是不适合在非传统模式下运行。
如何避免呢?
对可能发生的异常,捕获处理。
特别是使用timer等workerman组件,内部最好裹上一层try{}catch{},不然一次异常就有可能导致整个程序崩溃。
.... 后续补充
希望workerman发展越来越好。
$this->app->setRuntimePath($this->app->getRuntimePath() . $appName . DIRECTORY_SEPARATOR);
这个没办法一眼看出来