问题描述

客户使用的集成环境phpstudy,上面运行的是php+apahce+mysql,经常无故apache异常导致网站无法打开,需要重启apache服务恢复。由于不方便变更基础环境,故考虑使用bat脚本自动检测网站是否正常判断是否需要重启apache服务。

准备工作
1、由于借助curl命令测试网站是否正常,需提前安装配置好curl命令。
https://curl.haxx.se/download.html#Win64
下载对应的版本安装,并配置好环境变量。(在cmd中能使用curl命令)
2、最好将apache注册为系统服务,这样方便使用net重启服务。否则就要指定目录去重启。(注册系统服务推荐使用nssm)
注册系统服务
# 如果已是系统服务跳过此步骤,比如phpstudy上可注册为系统服务
1、下载,解压安装
官网:http://nssm.cc/download
根据操作系统选择32位或64位nssm,在该目录启动命令行窗口,建议写入path环境变量
2、服务注册(此处是之前注册logstash的截图)
nssm install logstash
接下来会弹出一个框,在path处选择启动logstash的start.bat
点击Install service即可
填写应用程序的对应路径、设置Service name。
最后单击install service按钮,执行安装。

windows下bat脚本自动重启Apache服务_第1张图片

编写脚本
::Auto restart apache
@echo off
set url=http://www.gc1999.com
echo %url%
for /f %%z in ('curl -so /dev/null -w %%{http_code} %url%') do (
set result=%%z
echo %%z
)
if %result% NEQ 200 (
::echo %date%%time% %url% 无法打开 错误代码 %result% >>C:\log\%date:~0,4%%date:~5,2%%date:~8,2%ERROR.log
net stop apache2a
net start apache2a
) else (
::echo %date%%time% %url% 网页可以打开 代码 %result% >>C:\log\%date:~0,4%%date:~5,2%%date:~8,2%SUCCESS.log
echo %date%%time% %url% 网页可以打开 代码 %result%
)
设置任务计划定期执行

自定义任务计划,重复执行检测
windows下bat脚本自动重启Apache服务_第2张图片
windows下bat脚本自动重启Apache服务_第3张图片
windows下bat脚本自动重启Apache服务_第4张图片