最近接了一个酒店PMS的单子,系统用的是单机版。
另外酒店的门锁采用的是互联网门锁,也就是说通过http协议下发请求生成短信发给客户的。门锁需要公网的http地址进行回调;另外管理层希望能通过手机查询酒店的经营情况。
综上所诉,我在酒店的服务器上安装一个frpc,买了一个阿里云的centos轻服务器安装frps,然后把PMS的数据库通过内网映射到阿里云的轻服务器的端口,从而实现在轻服务器上的thinkphp访问酒店的数据库。另外也做了3389的映射。
以上是背景。
但是才运行了大半天,突然就数据库访问超时了,3389也访问不了了。我估计是frpc进程终止了。网上一查,结果才发现这玩意的通病就是莫名其妙的终止进程,原因不明。一查解决方案,都是搞个看守程序,但是我觉得吧,太麻烦。
只需要写个批处理run.bat来启动frpc,start参数后面加个/wait,表示等到程序执行完成,当执行完成的时候,不管三七二十一,再重新运行run.bat,如此就进入一个死循环。如果真的想要终止进程,就把bat的cmd进程给终止了,再终止frpc。
这样子等于设计了一个看门程序,而且负荷低啊。
@echo off
echo 当前目录:%~dp0 >>log.txt
if not exist %~dp0frpc.exe (
echo %~dp0frpc.exe 文件不存在 >>log.txt
exit
)
echo %date% %time% 正终止其它的FRPC进程 >>log.txt
taskkill /f /im frpc.exe
echo %date% %time% 已经终止全部的FRPC进程 >>log.txt
echo %date% %time% 正在启动FRPC >>log.txt
start /wait frpc.exe -c frpc.ini
echo %date% %time% FRPC发生中断 >>log.txt
run.bat
执行了几天,再也没有访问中断的问题了。每次frpc中断,都可以在一秒钟内迅速恢复:
当前目录:D:\frp_0.49.0_windows_amd64\
2023/06/12 周一 10:56:56.89 正终止其它的FRPC进程
2023/06/12 周一 10:56:57.03 已经终止全部的FRPC进程
2023/06/12 周一 10:56:57.03 正在启动FRPC
2023/06/12 周一 19:14:35.31 FRPC发生中断
当前目录:D:\frp_0.49.0_windows_amd64\
2023/06/12 周一 19:14:35.32 正终止其它的FRPC进程
2023/06/12 周一 19:14:35.39 已经终止全部的FRPC进程
2023/06/12 周一 19:14:35.39 正在启动FRPC
2023/06/13 周二 6:56:34.82 FRPC发生中断
当前目录:D:\frp_0.49.0_windows_amd64\
2023/06/13 周二 6:56:34.83 正终止其它的FRPC进程
2023/06/13 周二 6:56:34.90 已经终止全部的FRPC进程
2023/06/13 周二 6:56:34.90 正在启动FRPC
2023/06/13 周二 18:38:35.65 FRPC发生中断
当前目录:D:\frp_0.49.0_windows_amd64\
2023/06/13 周二 18:38:35.67 正终止其它的FRPC进程
2023/06/13 周二 18:38:35.73 已经终止全部的FRPC进程
2023/06/13 周二 18:38:35.73 正在启动FRPC
2023/06/14 周三 6:20:35.08 FRPC发生中断
当前目录:D:\frp_0.49.0_windows_amd64\
2023/06/14 周三 6:20:35.09 正终止其它的FRPC进程
2023/06/14 周三 6:20:35.16 已经终止全部的FRPC进程
2023/06/14 周三 6:20:35.16 正在启动FRPC