ThinkPHP实现定时任务的操作步骤

接到一个需求:定时检查设备信息,2分钟没有心跳的机器,推送消息给相关人员,用thinkphp5框架,利用框架自带的任务功能与crontab配合来完成定时任务。

第一步:分析需求

  • 先写获取设备信息,2分钟之内没有心跳的设备信息数据的功能;
  • 再写推送消息给相关人员的功能;
  • 写定时任务,调用推送消息的功能,将设备故障的数据通过飞书推送给相关人员处理;

第二步:开始编写代码

这个需求的难点在于推送消息和利用框架编写定时任务的功能,本文就定时任务的功能进行代码展示。

用的框架是thinkphp5框架,利用框架自带的任务功能与crontab配合来完成定时任务。

1. 在tp框架中编写逻辑代码

创建command模块,定义任务类:在项目application目录下创建command模块文件夹->创建任务类文件,继承

think\console\Command;
think\console\Input;
think\console\Output;

ThinkPHP实现定时任务的操作步骤

  • 编写任务逻辑代码:通过实现configure方法来设置任务的名称和描述,execute方法来实现执行任务的逻辑,可以调用其他的方法来实现具体的任务逻辑,例如:发送通知、处理数据等。
  • 配置命令文件:在项目的application目录下的command.php文件中配置,返回一个数组,包含所有类的命名空间,这样thinkphp就知道可以执行的命令。

ThinkPHP实现定时任务的操作步骤

下面贴上代码,仅供参考:

<?php
 
namespace app\command;
use app\admin\controller\Message;
use think\console\Command;
use think\console\Input;
use think\console\Output;
/**
 * 定时任务类
 * Class Task
 * User:赫陈
 * Date: 2024-07-02
 */
class TaskF extends Command
{
 
    // 设置命令名称和描述
    protected function configure()
    {
        $this->setName('sendmessage')
            ->setDescription('设备故障发送消息到飞书群');
    }
 
    // 执行命令的逻辑
    protected function execute(Input $input, Output $output)
    {
        // 在这里编写具体的任务逻辑,例如发送消息给用户
        $output->writeln("开始发送消息...");
 
        // 假设有一个方法 sendMessageToUser() 用于发送消息
        $res = $this->sendMessageToUser();
        $output->writeln("消息发送结果:".$res["message"]);
        if($res['status'] != 'no'){
            $output->writeln("消息发送完成!");
        }
    }
 
    private function sendMessageToUser()
    {
        // 实现发送消息的具体逻辑,例如调用API或数据库操作等
        $Message = new Message();
        $res = $Message -> sendMessage();
        return $res;
    }
 
 
 
 
}

2. 测试代码

逻辑代码编写完后,打开终端,输入thinkphp的命令开始测试

命令:php think sendmessage

回车执行命令

ThinkPHP实现定时任务的操作步骤

ThinkPHP实现定时任务的操作步骤

第三步:配置crontab

1. 打开终端,输入crontab -e 命令,编写crontab文件

ThinkPHP实现定时任务的操作步骤

输入如下命令:

*/5 * * * * /usr/php/bin/php /home/www/project/think sendtofeishu >>  /home/wwwroot/tuoluo/runtime/log/task.log 2>&1

解释:

命令*号的部分为分、时、日、月、周,把想要执行的时间写上,这个是每5分钟执行一次;

/usr/php/bin/php 这部分是php的安装路径,必须得写这个,要不然系统找不到可执行的系统;

/home/www/project/think sendtofeishu 这部分是项目的根目录路径,必须写全了,这样系统才能找到应用;

/home/wwwroot/project/runtime/log/task.log 这部分是执行任务产生的日志文件路径,文件若是没有会自动创建。

2. 保存并退出,用crontab -l 命令查看crontab命令。

第四步:查看执行日志

查看文件中配置的日志文件:用cat 文件名 或者tail -f 命令查看都行。

到此这篇关于ThinkPHP实现定时任务的操作步骤的文章就介绍到这了,更多相关ThinkPHP定时任务内容请搜索恩蓝小号以前的文章或继续浏览下面的相关文章希望大家以后多多支持恩蓝小号!

原创文章,作者:ZBQSL,如若转载,请注明出处:http://www.wangzhanshi.com/n/524.html

(0)
ZBQSL的头像ZBQSL
上一篇 2024年12月17日 17:52:57
下一篇 2024年12月17日 17:52:59

相关推荐

  • Ubuntu安装和完美卸载PHP7的方法

    一、安装 我第一次安装php的时候没有安装apache的php模块,结果apache不能解析php文件,访问文件显示的是源码。 一个命令搞定:安装php7和apache的php7模…

    2025年1月1日
  • PHP如何优化冗余代码

    在编程中,代码的冗余是一个常见的问题,不仅增加了代码的复杂性,还降低了可读性和可维护性。对于PHP这样的语言来说,减少代码冗余同样重要,尤其是当项目规模变得越来越大时。本文将探讨如…

    php 2024年12月17日
  • PHP7实现daemon守护进程的案例分析

    在一个多任务的计算机操作系统中,守护进程是一种在后台执行的计算机程序。此类程序会被以进程的形式初始化。守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志…

    php 2025年1月1日
  • php7安装下载igbinary扩展的方法

    适用于Centos6.x和Centos7.x系统,php使用7.1版本,wlnmp一键包已支持该扩展 igbinary扩展包地址: https://pecl.php.net/pac…

    2025年1月1日
  • PHP实现页面跳转的三种方式

    前言 在 PHP 中实现页面跳转有多种方式,常见的方式包括 PHP 自带的 header() 函数、HTML 元素 <meta> 标签和 JavaS…

    php 2024年12月17日
  • PHP7的抽象语法树是什么

    什么是抽象语法树? 抽象语法树(abstract syntax tree,AST)是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,这所以说是抽象的,是因为…

    2025年1月1日
  • windows下安装php7的方法

    安装方法:1、官网上下载适合的php7安装包,然后解压,文件夹重命名为“php7”;2、打开php7文件夹,找到“php.ini-development”文件,重命名为“php.i…

    2025年1月1日
  • PHP7新增功能有哪些

    PHP语言一个非常重要的特点就是“弱类型”,它让PHP的程序变得非常容易编写,新手接触PHP能够快速上手,不过,它也伴随着一些争议。支持变量类型的定义,可以说是革新性质的变化,PH…

    php 2025年1月1日
  • 怎么使用php7连接oracle 11g

    1、解压客户端放到一个目录下,新建tnsnames.ora放到客户端文件夹的子目录下 2、加入以下代码:est_db是自己起的连接名字,IP替换为远程oracle的IP,servi…

    2025年1月1日
  • ThinkPHP3.2.3从php5升级到php7的示例分析

    thinkphp是什么 thinkphp属于一种免费的开发框架,能够用于开发前端网页,最早thinkphp是为了简化开发而产生的,thinkphp同时也是遵循Apache2协议,最…

    2025年1月1日

发表回复

登录后才能评论