更好的实现方法请参考:使用 php 实现类似 linux crontab 的定时任务功能,支持秒级定时
本文分享一下php模拟linux crontab实现定时计划任务的方法。
PHP定时计划任务需要两个文件。
1,crontab.conf.php (配置文件)
<?php //当为0时,关闭计划任务 return 1;
2,crontab.php (主体文件)
<?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval = 60 * 3;// 每隔3分钟运行 $i = 0; do { $nowTime = date("Y-m-d H:m:s"); $run = include 'crontab.conf.php'; if (!$run) { file_put_contents("crontab_task.log", "==计划任务已结束 $nowTime==\r\n", FILE_APPEND); die('Job has ended.'); } //此处放要执行的代码 sleep($interval);// 等待3分钟 $data = "$i>计划任务正在运行中...(运行状态:$run) $nowTime\r\n"; file_put_contents("tasktest.txt", $data, FILE_APPEND); $i++; } while (true);
主要改变 crontab.conf.php 中 return 0 即可实现控制这个计划任务的关闭。
注意:当php服务关掉之后该计划任务脚本也会停掉并且不会自动重启。