Closed lscgzwd closed 7 years ago
反复试验,基本排除是zookeeper冲突问题,反而感觉是static静态区的问题,我在代码里面参考YII做了个createObject 实现单例, 单独写测试脚本,连接zookeeper是没有问题的,使用我提供的这份代码就有问题,
onTimer回调函数报错了,你可以用sleep模拟下ontimer函数,看报啥错,或者手动执行下
不是回调函数的问题,回调函数最顶层有try catch,并且如问题描述,重启第一次失败,第二次正常,也就是只要不出现这个错误,都会执行正常,脱离swoole CLI 单例执行是不出问题的,并且单独用纯PHP写,不用YII写也没有问题,怀疑代码哪个地方不兼容,
进程名被重写了,可以通过 ps aux|grep storage 看进程,可以在params.php中更改serverName来改进程名字
不是一个BUG,原因是我使用了PHP7的强类型,限制 了函数返回类型,但是由于zookeeper 临时节点问题,导致返回的可能类型不对,导致错误,但是不知道为什么这个错误没有被记录进任何日志,最后跟进到zend_call_function 里面有if(EG(exception)) {} 我把该异常打印出来后解决问题。zend_exception_error(EG(exception), E_ERROR);
样例代码:https://github.com/lscgzwd/briarbear