与大家分享一下,在workerman开发中遇到的问题与解决方法

时间:2025-02-25 18:09:06
1  workerman无法正常访问
问题描述:在阿里云ECS上部署了workerman的应用(ECS是专有网络),在ECS安全组里已经允许workerman需要的全部端口,但是外网一直不能正常打开(注,其他服务,比80端口外部是可以用访问的)。telnet连接显示“No route to host”,而且我是关闭了centos7的firewalld防火墙的,这让我很困惑。

问题原因:
因为对centos7了解不多,关闭后,并没有关闭导致的。

解决问题:
1、安全组入方向,设置workerman 的端口范围;
2、关闭firewalld防火墙和修改/etc/sysconfig/iptables规则。

2  workerman 不能关闭怎么办
问题描述:启动脚本里执行Worker::stopAll()并不能停止workerman,Worker::stopAll()只有在运行workerman的主进程里执行才有效,外部其它进程执行没有效果。

停止Workerman的流程是
1、找到Workerman主进程pid
2、给pid发送SIGINT信号(posix_kill(SIGINT, pid))
3、workerman主进程收到SIGINT信号后自身执行Worker::stopAll()完成服务停止。

这三个步骤workerman内部应封装好,调用流程是
1、设置$argv = 'stop';
2、运行Worker::runAll();

3  workerman无法使用怎么办
问题描述:启动后报错类似如下:php start