启动停止等命令
发布时间:2023-08-30, 09:28:10 分类:Linux | 编辑 off 网址 | 辅助
正文 1452字数 41,572阅读
Workerman启动停止等命令
启动
以debug(调试)方式启动
php start.php start
Run code
Cut to clipboard
以daemon(守护进程)方式启动
php start.php start -d
Run code
Cut to clipboard
停止
php start.php stop
Run code
Cut to clipboard
重启
php start.php restart
Run code
Cut to clipboard
平滑重启
php start.php reload
Run code
Cut to clipboard
查看状态
php start.php status
Run code
Cut to clipboard
查看连接状态(需要Workerman版本>=3.5.0)
php start.php connections
Run code
Cut to clipboard
debug和daemon方式区别
1、以debug方式启动,代码中echo、var_dump、print等打印函数会直接输出在终端。
2、以daemon方式启动,代码中echo、var_dump、print等打印会默认重定向到/dev/null文件,可以通过设置Worker::$stdoutFile = '/your/path/file';来设置这个文件路径。
3、以debug方式启动,终端关闭后workerman会随之关闭并退出。
4、以daemon方式启动,终端关闭后workerman继续后台正常运行。
什么是平滑重启?
平滑重启不同于普通的重启,平滑重启可以做到在不影响用户的情况下重启服务,以便重新载入PHP程序,完成业务代码更新。
平滑重启一般应用于业务更新或者版本发布过程中,能够避免因为代码发布重启服务导致的暂时性服务不可用的影响。
注意:只有子进程运行过程中载入的文件支持reload,主进程载入的文件不支持reload。或者说Worker::runAll执行完后workerman运行过程中动态加载的文件支持reload,Worker::runAll执行前就载入的文件代码不支持reload
平滑重启原理
WorkerMan分为主进程和子进程,主进程负责监控子进程,子进程负责接收客户端的连接和连接上发来的请求数据,做相应的处理并返回数据给客户端。当业务代码更新时,其实我们只要更新子进程,便可以达到更新代码的目的。
当WorkerMan主进程收到平滑重启信号时,主进程会向其中一个子进程发送安全退出(让对应进程处理完毕当前请求后才退出)信号,当这个进程退出后,主进程会重新创建一个新的子进程(这个子进程载入了新的PHP代码),然后主进程再次向另外一个旧的进程发送停止命令,这样一个进程一个进程的重启,直到所有旧的进程全部被置换为止。
我们看到平滑重启实际上是让旧的业务进程逐个退出然后并逐个创建新的进程做到的。为了在平滑重启时不影响客用户,这就要求进程中不要保存用户相关的状态信息,即业务进程最好是无状态的,避免由于进程退出导致信息丢失。
相关帖子
cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &
关闭
killall -2 MediaServer
Run code
Cut to clipboard
zlmediakit服务器的启动与关闭
(支付宝)给作者钱财以资鼓励 (微信)→
有过 3 条评论 »
rewrite ^(.*)/app/v3/verify/backflow$ $1/app/v3/verify/backflow/index.php?$2 last;
cd ZLMediaKit/release/linux/Debug #通过-h可以了解启动参数 ./MediaServer -h #以守护进程模式启动 ./MediaServer -d & killall -2 MediaServer
git repo-clean --verbose --scan --type=exe --number=10 --delete rewrite ^(.*)/app/v3/verify/backflow$ $1/app/v3/verify/backflow/index.php?$2 last;
systemctl restart smb.service ##重启Samba服务
./my2sql -user root -password 7PCLsghYqKVbtMs -host 127.0.0.1 -port 3307 -mode file -local-binlog-file ./mysqlbin/mysql-bin.002380 -work-type rollback -start-file mysqlbin/mysql-bin.002380 -start-datetime "2020-07-16 10:20:00" -stop-datetime "2023-08-16 11:00:00" -output-dir ./tmpdir ./my2sql -user root -password 7PCLsghYqKVbtMs -host 127.0.0.1 -port 3307 -mode file -local-binlog-file ./mysqlbin/mysql-bin.002381 -work-type 2sql -start-file ./mysqlbin/mysql-bin.002381 -start-datetime "2020-07-16 10:20:00" -stop-datetime "2023-08-16 11:00:00" -output-dir ./tmpdir mysqlbinlog --base64-output=decode-rows -v mysql-bin.002382 --result-file=mysql-bin-sql-002382.sql
mysqlbinlog --base64-output=decode-rows -v mysql-bin.002375 --result-file=mysql-bin-sql-002375.sql
宝塔》定时任务》脚本》直接复制粘贴》运行即可,
#!/bin/bash step=1 #间隔的秒数,不能大于60 for (( i = 0; i < 60; i=(i+step) )); do curl http://lizhenqiu.com #调用链接 sleep $step done exit 0
精度问题,php 浮点型运算丢失精度,float转换为int类型后导致最后一位数值对不上,
所以需要intval(strval()) 转换金额数值
*100 和intval(strval())处理后的数值再int就有区别了 $refund_fee = 2257.99; $refund_fee0 = $refund_fee*100; $refund_fee2 = intval(strval($refund_fee*100)); //转为分 $refund_fee3 = (int)$refund_fee0; $refund_fee4 = (int)$refund_fee2; float(225799) int(225799) string(2) "3:" int(225798) string(2) "4:" int(225799)
$refund_fee3 = 225798是真的神奇
intval(strval($refund_fee*100));
用这个就可以了