网站里的活动专题栏怎么做,域名解析网站登录,wordpress主题hestia,个人网页设计特点接到一个需求#xff1a;定时检查设备信息#xff0c;2分钟没有心跳的机器#xff0c;推送消息给相关人员#xff0c;用thinkphp5框架#xff0c;利用框架自带的任务功能与crontab配合来完成定时任务。
第一步#xff1a;分析需求
先写获取设备信息#xff0c;2分钟之…接到一个需求定时检查设备信息2分钟没有心跳的机器推送消息给相关人员用thinkphp5框架利用框架自带的任务功能与crontab配合来完成定时任务。
第一步分析需求
先写获取设备信息2分钟之内没有心跳的设备信息数据的功能再写推送消息给相关人员的功能写定时任务调用推送消息的功能将设备故障的数据通过飞书推送给相关人员处理
第二步开始编写代码
这个需求的难点在于推送消息和利用框架编写定时任务的功能本文就定时任务的功能进行代码展示。
用的框架是thinkphp5框架利用框架自带的任务功能与crontab配合来完成定时任务。
1. 在tp框架中编写逻辑代码
创建command模块定义任务类在项目application目录下创建command模块文件夹-创建任务类文件,继承 think\console\Command;
think\console\Input;
think\console\Output;
这三个文件。 编写任务逻辑代码通过实现configure方法来设置任务的名称和描述execute方法来实现执行任务的逻辑可以调用其他的方法来实现具体的任务逻辑例如发送通知、处理数据等。配置命令文件在项目的application目录下的command.php文件中配置返回一个数组包含所有类的命名空间这样thinkphp就知道可以执行的命令。
下面贴上代码仅供参考
?phpnamespace 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
回车执行命令 第三步配置crontab
1. 打开终端输入crontab -e 命令编写crontab文件 输入如下命令
*/5 * * * * /usr/php/bin/php /home/www/project/think sendtofeishu /home/wwwroot/tuoluo/runtime/log/task.log 21
解释
命令*号的部分为分、时、日、月、周把想要执行的时间写上这个是每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 命令查看都行。