很久之前运维同学通知我 线上服务器 产生大量 core.15.... 文件 磁盘快占满了 我没在意.
今天发现线上有个服务的否个进程运行出了问题.找了一下午问题. 都没找明白 .
想起每次找swoole官方回复都是 版本太低, 先升级到最新版本
.
抱着试试看的心态. 升级swoole
到 4.4.12
在运行发现如下错误:
PHP Deprecated: Non-static method Controller\Test::func() should not be called statically in /data/application/QuantPlatform/script/src/Controller/Test.php on line 41
PHP Deprecated: Swoole\Timer::swoole_timer_tick() expects parameter 2 to be a valid callback, non-static method Controller\Test::func() should not be called statically in /data/application//script/src/Controller/Test.php on line 41
实际上就是我在使用 swoole_timer_tick
定时器时 2参数回调方法 是不是静态方法导致的问题.
core dump
可能也能找出问题所在 但 对我有学习成本.
下次再有bug
第一时间更新版本.
记录下现象:
- 定时器中调用非静态方法 无抛错
- 调用外部模型类或第三方类 前3次调用都没有问题.
- 调用第四个不同的类时 异常退出.
{"Worker Error":0,"pid":4236,"exitCode":0,"signal":11}
线上swoole 4.2.11
版本 无抛错 进程仅异常退出.
swoole 4.4.12
版本 抛错提示 Non-static method