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

本文分享了workerman在开发过程中遇到的若干问题,包括无法正常访问、无法关闭、无法启动、端口占用等问题,并详细介绍了问题的原因及解决步骤,如检查端口、配置安全组、修改iptables规则等,旨在帮助开发者顺利解决workerman相关问题。
摘要由CSDN通过智能技术生成

在workerman开发过程中,遇到了很多问题,我都总结了一下,与大家分享:如果还不懂的,建议去看看这套教程,希望能帮助到你!

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

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

解决问题:
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.php start

PHP Warning: stream_socket_server(): unable to connect to tcp://xx.xx.xx.xx:xxxx (Address already in use) 
in ...workerman/Worker.php on line xxxx

关键字:Address already in use


失败原因:端口被占用,无法启动。
可以通过命令netstat -anp | grep 端口号来找出哪个程序占用了端口。然后停止对应的程序释放端口解决。

如果不能停止对应端口的程序&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值