winsw和bat做php脚本Windows服务

2021-07-20

winsw:在github/gitee可以了解他注册服务的方法及下载地址

# phpScript.xml
<service>
  <id>phpScript</id>
  <name>phpScript</name>
  <description>php脚本监听</description>
  <executable>%BASE%\1.bat</executable>
  <startarguments>start</startarguments>
  <stopexecutable>C:\Windows\System32\taskkill.exe</stopexecutable>
  <stoparguments>/f /t /im winsw.exe</stoparguments>
  <logpath>%BASE%\logs</logpath>
  <log mode="roll-by-time">
	<pattern>yyyyMMdd</pattern>
  </log>
</service>
# 安装脚本监听服务
WinSW install phpScript.xml
# 启动脚本监听服务
WinSW start phpScript.xml
#1.bat

@echo off

set mtitle=123321
set MPID=0
title %mtitle%

echo 队列1

goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit

:begin

for /f "tokens=1" %%i in (H:\web\11.pid) do (set MPID=%%i)

if  "%1" == "stop" (
	echo 结束进程
	taskkill /f /pid %MPID%
) else (
	timeout /t 5

	for /f "tokens=1" %%i in ('tasklist /nh /FI "PID eq %MPID%"') do (
		if '%%i' == 'php.exe' (
			echo "pid:%MPID% is running"
		) else (
			echo "pid:%MPID% is stoped"
			start cmd /C H:\web\startPhpScript.bat pause
		)
	)
)
goto begin
# startPhpScript.bat
echo "启动php脚本"
php 1.php
#1.php
<?php
file_put_contents('11.pid', getmypid() . PHP_EOL);

 

{/if}