启动:

一般到启动目录执行:

php +启动文件 + start (+ -d)   ()括号里面为可选 这里的-d是后台运行

举例 就举tp5项目整合workerman

一般会在项目根目录,public同级  有个service.php 该文件为tp5中用来启动workerman的

完整命令:

php service.php start -d

正常情况下,此时能正常使用了,

可以去查下代码中 websocket占用的端口,

如果端口未被使用,外网访问不到,肯定是没成功

 

停止

没正常启动,或者其他问题导致中途不能正常访问,或者不能再次重启时需要停止

执行

php +启动文件 + stop 

还举上一个tp5中的例子

php service.php stop

 

 提示停止失败。

猜想是 停止程序无法正常执行

网上有对应的解决办法:

http://gongfuma.com/front/tech/detail/id/486.html

killall -9 php
ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9

其中killall -9 php 命令在某些不能停止的环境中不能乱用,有时几个项目用一个php软件

所以直接执行第二个

ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9
返回

kill: sending signal to 4140 failed: No such process

无此进程

再执行php service.php stop

返回

Workerman[service.php] stop
Workerman[service.php] not run
[1]+  Killed                  php service.php start

看来

ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9

命令还是有效果的。

与php service.php start -d 命令相比

php service.php start

命令会暴露出一下错误

 

是因为pcntl_wait(),pcntl_signal_dispatch()这两个函数被禁用了,导致启动时陷入循环报错

客户端执行ctrl+c 不能退出循环 

执行ctrl+z先退出

先处理禁用函数

 

 

 找出并删除

再次启动workerman

php service.php start   (不加-d  如果有错误可以暴露出来)

 

 又找到个函数被禁用

 把pcntl_alarm()函数也解禁了再试

 

 这个是项目中redis连不上,也是错误,

一般见得的workerman这里就可以正常启动了

我这里安装下redis 和redis扩展  以及项目配置redis 端口 密码 之类的

然后再次启动workerman

 

 启动成功

端口也是正常的

 

 记住这里用的是

php service start  不是后台启动,

 

 只要一关闭客户端符就会停止

先测试网页能否访问,正常之后再后台启动

 

 能正常启动

测试网址

http://www.websocket-test.com/

现在把workerman停了,然后再后台启动

 

 

 

posted on 2021-03-30 22:49  Beautytoloveme  阅读(1594)  评论(0编辑  收藏  举报