百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

ThinkPHP框架——实现定时任务,定时更新、清理数据

yuyutoo 2024-11-16 02:39 1 浏览 0 评论

大家好,我是小蜗牛,今天给大家分享一下,如何用ThinkPHP5.1.*版本实现定时任务,

例如凌晨12点更新数据、每隔10秒检测过期会员、每隔几分钟发送请求保证ip的活性等

本次分享,主要用到一个名为EasyTask的扩展。

那么什么是EasyTask呢?又怎么安装呢?

什么是EasyTask

EasyTask是一款简单易用的PHP常驻内存定时器,可以用它来完成重复运行的任务(如订单超时自动取消,短信邮件异步推送,队列/消费者/频道订阅者等等),甚至处理Crontab计划任务(如每天凌晨1点-3点同步DB数据,每月1号生成月度统一报表,每晚10点重启nginx服务器等等),工具包同时支持windows、linux、mac环境运行。与之相似的还有Workman等工具。

这里是EasyTask的官方文档地址:https://gitee.com/392223903/EasyTask

如何安装EasyTask(这里以Thinkphp框架为例)

首先进入你的thinkphp目录下,使用composer进行安装,使用如下指令:

composer require easy-task/easy-tas

如何使用EasyTask

关于如何使用EasyTask这个组件,需要配合thinkphp中的创建自定义指令功能。

当你安装好EasyTask后(这里默认你已经安装好,如果安装过程中出现问题,请根据代码提示搜索解决方案)

1、在thinkphp框架中创建一个自定义命令类文件,这里我新增的是一个名为Task.php的文件,路径是:application/common/command/Task.php

2、Task.php中的代码:

<?php

namespace app\common\command;

use think\console\Command;

use think\console\Input;

use think\console\input\Argument;

use think\console\Output;

use app\api\utils\News;

class Task extends Command

{

// 配置

protected function configure()

{

//设置名称为task

$this->setName('task')

//增加一个命令参数,用于获取输入操控参数

->addArgument('action', Argument::OPTIONAL, "action")

->addArgument('force', Argument::OPTIONAL, "force");

}

// 执行逻辑

protected function execute(Input $input, Output $output)

{

//获取输入参数

$action = trim($input->getArgument('action'));

$force = trim($input->getArgument('force'));

// 配置任务

// 创建EasyTask对象

$task = new \EasyTask\Task();

// 设置记录运行时目录(日志或缓存目录)

$task->setRunTimePath('./runtime/viplog/');

// 设置常驻内存

$task->setDaemon(true);

// 添加类的方法类型定时任务(同时支持静态方法)(开启1个进程,每隔10秒执行1次)

// 还有其余用法,欢迎查看官方文档,根据官方文档自定义方法

// 这里我设置每6小时执行一下News类中的upNews方法。

$task->addClass(News::class, 'upNews','upnews' ,21600, 1);

// 根据命令执行

if ($action == 'start')

{

$task->start();

}

elseif ($action == 'status')

{

$task->status();

}

elseif ($action == 'stop')

{

$force = ($force == 'force'); //是否强制停止

$task->stop($force);

}

else

{

exit('Command is not exist');

}

}

}

3、配置application/command.php文件

<?php

return [

'app\common\command\Task',

];

4、配置完成,接下来就是启动定时任务,让其常驻于内存(回到根目录运行)

// php think 定时任务名 动作

启动任务: php think task start

查询任务: php think task status

普通关闭: php think task stop

强制关闭: php think task stop force

Ps:由于我使用的是宝塔,会自动禁用某些关键函数,根据宝塔提示的禁用函数一个个解封即可。

删除宝塔面板中的禁用函数即可。

5、运行结果图

运行效果:

从启动脚本的时间开始,每个6小时,自动运行指定目录下的类中方法(通过静态方法调用),这里的方法可以自定义逻辑,主要是如何设定让它隔一段时间自动运行。

总结

因为第一次使用定时任务,所以采用的是EasyTask这个包,实现定时任务还有很多的解决方案,这里只是给大家提供一个我所使用过的定时任务解决方案。

谢谢大家的阅读,我是小蜗牛,如果觉得对你有帮助

麻烦请点个赞,点个关注吧~Thanks?(?ω?)?

相关推荐

MySQL5.5+配置主从同步并结合ThinkPHP5设置分布式数据库

前言:本文章是在同处局域网内的两台windows电脑,且MySQL是5.5以上版本下进行的一主多从同步配置,并且使用的是集成环境工具PHPStudy为例。最后就是ThinkPHP5的分布式的连接,读写...

thinkphp5多语言怎么切换(thinkphp5.1视频教程)

thinkphp5多语言进行切换的步骤:第一步,在配置文件中开启多语言配置。第二步,创建多语言目录。相关推荐:《ThinkPHP教程》第三步,编写语言包。视图代码:控制器代码:效果如下:以上就是thi...

基于 ThinkPHP5 + Bootstrap 的后台开发框架 FastAdmin

FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架。主要特性基于Auth验证的权限管理系统支持无限级父子级权限继承,父级的管理员可任意增删改子级管理员及权限设置支持单...

Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示

本文实例讲述了Thinkphp5.0框架实现控制器向视图view赋值及视图view取值操作。分享给大家供大家参考,具体如下:Thinkphp5.0控制器向视图view的赋值方式一(使用fetch()方...

thinkphp5实现简单评论回复功能(php评论回复功能源码下载)

由于之前写评论回复都是使用第三方插件:畅言所以也就没什么动手,现在证号在开发一个小的项目,所以就自己动手写评论回复,没写过还真不知道评论回复功能听着简单,但仔细研究起来却无法自拔,由于用户量少,所以...

ThinkPHP框架——实现定时任务,定时更新、清理数据

大家好,我是小蜗牛,今天给大家分享一下,如何用ThinkPHP5.1.*版本实现定时任务,例如凌晨12点更新数据、每隔10秒检测过期会员、每隔几分钟发送请求保证ip的活性等本次分享,主要用到一个名为E...

BeyongCms系统基于ThinkPHP5.1框架的轻量级内容管理系统

BeyongCms内容管理系统(简称BeyongCms)BeyongCms系统基于ThinkPHP5.1框架的轻量级内容管理系统,适用于企业Cms,个人站长等,针对移动App、小程序优化;提供完善简...

YimaoAdminv3企业建站系统,使用 thinkphp5.1.27 + mysql 开发

介绍YimaoAdminv3.0.0企业建站系统,使用thinkphp5.1.27+mysql开发。php要求5.6以上版本,推荐使用5.6,7.0,7.1,扩展(curl,...

ThinkAdmin-V5开发笔记(thinkpad做开发)

前言为了快速开发一款小程序管理后台,在众多的php开源后台中,最终选择了基于thinkphp5的,轻量级的thinkadmin系统,进行二次开发。该系统支持php7。文档地址ThinkAdmin-V5...

thinkphp5.0.9预处理导致的sql注入复现与详细分析

复现先搭建thinkphp5.0.9环境...

thinkphp5出现500错误怎么办(thinkphp页面错误)

thinkphp5出现500错误,如下图所示:相关推荐:《ThinkPHP教程》require():open_basedirrestrictionineffect.File(/home/ww...

Thinkphp5.0极速搭建restful风格接口层

下面是基于ThinkPHPV5.0RC4框架,以restful风格完成的新闻查询(get)、新闻增加(post)、新闻修改(put)、新闻删除(delete)等server接口层。1、下载Thin...

基于ThinkPHP5.1.34 LTS开发的快速开发框架DolphinPHP

DophinPHP(海豚PHP)是一个基于ThinkPHP5.1.34LTS开发的一套开源PHP快速开发框架,DophinPHP秉承极简、极速、极致的开发理念,为开发集成了基于数据-角色的权限管理机...

ThinkPHP5.*远程代码执行高危漏洞手工与升级修复解决方法

漏洞描述由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接GetWebShell。漏洞评级严重影响版本ThinkPHP5.0系列...

Thinkphp5代码执行学习(thinkphp 教程)

Thinkphp5代码执行学习缓存类RCE版本5.0.0<=ThinkPHP5<=5.0.10Tp框架搭建环境搭建测试payload...

取消回复欢迎 发表评论: