定时任务要符合要求:
能够持续执行,不要中断。(可以使用supervisor 实现)
代码
test.php 文件
<?php
function test()
{
$start = time() + 15;
echo time(); // 这个值 supervisor 每次重启,都会打印一次。
//supervisor 其实不是重启,重启会换 pid,他是维护了这个进程。每次间隔15S 会打印一次这个值
while (true) {
//while里面写 sleep 时间加自己的业务实现,也可以不使用 sleep,直接获取SQL是否为真.但最好还是使用 sleep 比较稳妥
sleep(3);
if (time() > $start) {
echo('stop');
break;
}
echo(date('H:i:s'));
}
}
test();
然后使用 supervisor 添加这个进程即可。 php test.php
如果不使用supervisor
,直接在终端执行 php test.php -d
,应该也可以,但是这种方案,如果程序断掉了,不会重启
使用宝塔执行定时任务
每分钟执行以下代码(实现了3S执行一次)
step=3
for (( i = 0; i < 60; i=(i+step) )); do
$(php '/www/wwwroot/test2.php')
sleep $step
done
test2.php
function test()
{
echo (date('H:i:s'));
}
test();
网友评论