thinkphp6定时任务,php定时器EasyTask

thinkphp6定时任务,php定时器EasyTask,第1张

本教程使用的定时任务基于EasyTak,EasyTask官方文档: https://gitee.com/392223903/EasyTask

(1).安装tp6

(2).安装定时任务composer包

(3).创建命令行处理类文件

会生成文件:tp\app\command\Task.php

将Task.php文件内容修改如下:

(4).配置tp\config\console.php文件

(5).执行命令(windows请使用cmd):

一. 简单

<?php

ignore_user_abort()//关掉浏览器,PHP脚本也可以继续执行.

set_time_limit(0)// 通过set_time_limit(0)可以让程序无限制的执行下去

ini_set('memory_limit','512M')// 设置内存限制

$interval=60*30// 每隔半小时运行

do{

//ToDo

sleep($interval)// 等待5分钟

}

while(true)

二. 简单 可控型

config.php

<?php

return 1

?>

cron.php

ignore_user_abort()//关掉浏览器,PHP脚本也可以继续执行.

set_time_limit(0)// 通过set_time_limit(0)可以让程序无限制的执行下去

$interval=60*30// 每隔半小时运行

do{

$run = include 'config.php'

if(!$run) die('process abort')

//ToDo

sleep($interval)// 等待5分钟

}

while(true)

三. 简单 改进型

<?php

$time=15

$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']

/*

function

*/

sleep($time)

file_get_contents($url)

?>

php中定时计划任务的实现原理:

当 PHP 脚本正常地运行 NORMAL 状态时,连接为有效。当远程客户端中断连接时,ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击 STOP 按钮导致的。当连接时间超过 PHP 的时限时,TIMEOUT 状态的标记将被打开。

示例代码:

<?php

ignore_user_abort(true)set_time_limit(0)

date_default_timezone_set('PRC')// 切换到中国的时间

$run_time = strtotime('+1 day')// 定时任务第一次执行的时间是明天的这个时候

$interval = 3600*12// 每12个小时执行一次

if(!file_exists(dirname(__FILE__).'/cron-run')) exit()// 在目录下存放一个cron-run文件,如果这个文件不存在,说明已经在执行过程中了,该任务就不能再激活,执行第二次,否则这个文件被多次访问的话,服务器就要崩溃掉了

do {

if(!file_exists(dirname(__FILE__).'/cron-switch')) break// 如果不存在cron-switch这个文件,就停止执行,这是一个开关的作用

$gmt_time = microtime(true)// 当前的运行时间,精确到0.0001秒

$loop = isset($loop) &&$loop ? $loop : $run_time - $gmt_time// 这里处理是为了确定还要等多久才开始第一次执行任务,$loop就是要等多久才执行的时间间隔

$loop = $loop >0 ? $loop : 0

if(!$loop) break// 如果循环的间隔为零,则停止

sleep($loop)

// ...

// 执行某些代码

// ...

@unlink(dirname(__FILE__).'/cron-run')// 这里就是通过删除cron-run来告诉程序,这个定时任务已经在执行过程中,不能再执行一个新的同样的任务

$loop = $interval

} while(true)


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/23669.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-16
下一篇2023-02-16

发表评论

登录后才能评论

评论列表(0条)

    保存