検索
ホームページphp教程php手册workerman与Thinkphp定时检测&平滑重启机制

workerman定时检测&平滑重启机制
一、定时检测

上次聊了下workerman与Thinkphp是如何结合使用,经过自己测试后已经部署到正式环境。如图
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服务,然后一键发布配置项,业务就按照我的配置去按时稳定执行呢?

有!先来上张图:

workerman与Thinkphp定时检测&平滑重启机制

周一了,要上班了,代码神马的下次补上~

您也可以参考这里:http://www.isbala.com/article/271.html

AD:真正免费,域名+虚机+企业邮箱=0元

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。