workerman定时检测&平滑重启机制
一、定时检测
上次聊了下workerman与Thinkphp是如何结合使用,经过自己测试后已经部署到正式环境。如图
参考地址:http://www.isbala.com/article/269.html
Thinkphp: http://www.thinkphp.cn/code/2026.html
好了,这里workerman我使用守护进程方式运行的,如果守护进程的主进程挂了,咱们业务就会受到影响了,比如统计数据缺失等
这次我们使用定时从检测来防止主进程挂掉,这里我们在Linux环境,利用crontab服务:
定时以root运行,编辑 /var/spool/cron/root
*/1 * * * * /bin/sh /data/yunwei/XXXXX/workermanMonitor.sh > /dev/null 2>&1 &
此处,每分钟进行检测主进程是否还在,不在的话,立即重启
workermanMonitor.sh脚本:
#!/bin/bash
# author: XXXX
# desc: 监控workerman主进程
count=`ps -ef |grep 'WorkerMan'| grep -v 'grep' | grep 'master' | wc -l`
echo $count
if [ $count -lt 1 ]; then
# 此处写入你的web项目根目录, thinkphp命令行需要在根目录运行
cd /data/wwwroot/XXXXX/
/usr/local/php/bin/php index.php Workerman/index restart
echo "restart";
echo $(date +%Y-%m-%d_%H:%M:%S) >/data/wwwlogs/CMSWorker/mainRestart.log
fi
二、平滑重启:
上次讲到的workerman在thinkphp控制器代码,我们已经部署到了正式,若我们需要增加各种配置项在Home/Conf/config.php中,由于workerman是以守护进程运行,
这个配置项在开启的时候是已经加载完成的,重启workerman会影响到正式业务,此时要用到workerman的平滑重启机制,当然并不是真正重启了workerman。
我们在workerman代码中这样加载thinkphp的配置项:
$worker->onMessage = function($connection, $data){
static $request_count = 0;// 已经处理请求数
if(++$request_count >= MAX_REQUEST){// 如果请求数达到1000,退出当前进程,主进程会立刻重新启动一个全新进程补充上来,从而完成进程重启
Worker::stopAll();
}
C(load_config(MODULE_PATH.'Conf/config'.CONF_EXT));//重新载入配置, 注意此处加载大家自己的Thinkphp配置项,我自己的业务是其它配置。
.....//其它业务逻辑代码
}
在回调方法中重新加载Thinkphp配置,这样就不需要重启了,来回顾下workerman重启:
/usr/local/php/bin/php index.php Workerman/index restart
总结:
说到这里,可能有些人会想到定时的问题,每增加一个任务,难道都要上Linux编辑/var/spool/cron/root, 正式环境咱没权限咋搞? 还要麻烦运维同学去操作吗?
Thinkphp有没有办法做到可以在后台直接配置这些类似crontab服务,然后一键发布配置项,业务就按照我的配置去按时稳定执行呢?
有!先来上张图:
周一了,要上班了,代码神马的下次补上~
您也可以参考这里:http://www.isbala.com/article/271.html
AD:真正免费,域名+虚机+企业邮箱=0元

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中