Windows计划任务不能直接定时关PHP,但可通过taskkill结束PHP进程、调用httpd -k stop或nginx -s stop停止Web服务、或让PHP脚本自身判断时间退出来实现。

Windows计划任务本身不能直接“定时关PHP”,但可以定时关闭运行PHP的进程(比如Apache、Nginx、php-cgi或命令行启动的PHP脚本),或者定时执行一个关机/重启操作来间接终止所有PHP服务。关键要明确你的真实目标:
你想关的是什么?
常见场景有三类,对应不同操作:
-
关掉正在后台运行的某个PHP脚本(例如用
php script.php启动的长时任务):需用taskkill结束对应进程; -
停止PHP所依赖的Web服务器(如Apache或Nginx):可调用其自带的
httpd -k stop或nginx -s stop命令; - 让整个电脑在PHP任务结束后自动关机:这才是“定时关机”本身,和PHP无关,只是时间上配合。
方法一:用计划任务结束PHP进程(推荐)
适用于你手动或脚本启动了独立PHP进程(比如爬虫、队列监听等),希望每天固定时间强制终止它:
- 新建一个
kill-php.bat文件,内容为:
@echo off
taskkill /f /im php.exe /t
rem 如只杀特定脚本,可用:taskkill /f /fi "imagename eq php.exe" /fi "windowtitle eq script.php" - 在任务计划程序中创建基本任务,操作设为“启动程序”,指向该
.bat文件; - 务必勾选“不管用户是否登录都要运行”和“使用最高权限运行”,否则无法结束系统级进程。
方法二:用计划任务停止Web服务(如Apache)
如果你用WAMP/XAMPP等集成环境,且想每天23点停掉PHP运行环境:
立即学习“PHP免费学习笔记(深入)”;
- 找到Apache安装目录下的
httpd.exe(如C:\xampp\apache\bin\httpd.exe); - 创建任务,程序填
httpd.exe,参数填-k stop; - 注意:该命令需在Apache所在目录下执行,所以应在“起始于”栏填写其 bin 目录路径(如
C:\xampp\apache\bin)。
方法三:PHP脚本自己控制退出(更安全)
不依赖外部任务,让PHP运行到指定时间就主动结束:
- 在PHP脚本开头加判断:
$shutdownTime = strtotime('23:00');
if (time() >= $shutdownTime) { exit("Reached shutdown time.\n"); } - 再配合计划任务每天启动一次该脚本(用
php.exe -f xxx.php),它会在目标时间自行退出,无需暴力杀进程。
本质上,“定时关PHP”不是计划任务的内置功能,而是靠组合系统命令与合理触发逻辑来实现。选哪种方式,取决于你是想停服务、停进程,还是停整台机器。



















