或者改造一下,开机自启动,一直运行bat,在bat里一直循环处理。缺点要临时关闭时,得先关闭这个bat。
@echo off
REM Bat目录,有Nginx.exe与xxfpm子目录。开机启动lnk:%AppData%\Microsoft\Windows\Start Menu\Programs\Startup
rem exit /b
if not exist C:\d_SUBST mkdir C:\d_SUBST
if not exist d:\ SUBST d: C:\d_SUBST
set logFile=C:\nginxLogs\%~n0_%date:~2,2%%date:~5,2%.log
if /i "%1"=="" goto monitor
goto %1
goto batEnd
:monitor
rem xxfpm需要cmd启动,不能后台运行,比如nssm.exe运行;而nginx nssm后,不能使用nginx -s reload。
call :xxfpm
call :nginx
call :nssm xxx
call :wp-cron
echo %date% %time% End of monitoring >> %logFile%
goto batEnd
:help
echo %~nx0 可用参数 stop maintenance wp-cron
goto batEnd
:stop
%~dp0nginx.exe -s stop
timeout 2 > nul
taskkill /f /FI "IMAGENAME eq nginx.exe"
taskkill /f /FI "IMAGENAME eq xxfpm.exe"
taskkill /f /FI "IMAGENAME eq php-cgi.exe"
echo %date% %time% End of nginxStop >> %logFile%
goto batEnd
:maintenance
echo 使用配置文件:conf/maintenance*.conf、html/Maintenance.html、conf/cert/*
%~dp0nginx.exe -s stop
timeout 2 > nul
taskkill /f /FI "IMAGENAME eq nginx.exe"
taskkill /f /FI "IMAGENAME eq xxfpm.exe"
taskkill /f /FI "IMAGENAME eq php-cgi.exe"
timeout 3 > nul
cmd /c start /d %~dp0 %~dp0nginx.exe -c conf/custom/maintenance.conf
echo %date% %time% Starting maintenance >> %logFile%
goto batEnd
::findstr Success ERRORLEVEL=0, failure ERRORLEVEL=1.
:xxfpm
tasklist /FI "IMAGENAME eq php-cgi.exe" | findstr /i /c:"php-cgi.exe"
if ERRORLEVEL 1 (
echo.
echo === xxfpm ===
echo %date% %time% Starting PHP FastCGI >> %logFile%
if /i "%PHP_HOME%"=="" set PHP_HOME=C:\inetEnv\php\
if /i "%PHP_FCGI_MAX_REQUESTS%"=="" set PHP_FCGI_MAX_REQUESTS=1000
%~dp0xxfpm\RunHiddenConsole.exe %~dp0xxfpm\xxfpm.exe "%PHP_HOME%php-cgi.exe -c %PHP_HOME%php.ini" -n 1 -i 127.0.0.1 -p 9000
timeout 5 > nul
goto xxfpm
)
goto :eof
:nginx
tasklist /FI "IMAGENAME eq nginx.exe" | findstr /i /c:"nginx.exe"
if ERRORLEVEL 1 (
echo.
echo === nginx ===
echo %date% %time% Starting Nginx >> %logFile%
%~dp0nginx.exe -t
echo.
cmd /c start /d %~dp0 %~dp0nginx.exe
timeout 3 > nul
goto nginx
)
goto :eof
:nssm
tasklist /FI "IMAGENAME eq %1.exe" | findstr /i /c:"%1.exe"
if ERRORLEVEL 1 (
echo.
echo === start %1 ===
echo %date% %time% nssm.exe start %1 >> %logFile%
nssm.exe start %1
timeout 3 > nul
goto nssm
)
goto :eof
:wp-cron
set Console=D:\Console\
%Console%\curl.exe --ca-native --user-agent "wp-cron from %~nx0" https://blog.t725.cn/wp-cron.php?doing_wp_cron
goto :eof
:batEnd
发表回复