启动:
一般到启动目录执行:
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停了,然后再后台启动