laravel使用scheduler实现计划任务
时间:2022-06-19
本文章向大家介绍laravel使用scheduler实现计划任务,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
传统的计划任务是使用linux的crontab
,每次对计划任务进行修改都要上服务器处理,不方便且不安全。laravel的命令调度器允许我们通过简单的配置即可实现计划任务功能。
场景假设:每分钟执行将当前时间戳写入文本中
实现流程如下:
新建artisan命令
$ php artisan make:command WriteTime --command=write:time-stamp
Console command created successfully.
--command 是指定 Artisan 调用的命令
以上指令生成了 app/Console/Commands/WriteTime.php
,对该文件进行以下修改:
namespace AppConsoleCommands;
use IlluminateConsoleCommand;
class WriteTime extends Command
{
protected $signature = 'write:time-stamp';
protected $description = '将时间戳写入文件';
public function __construct()
{
parent::__construct();
}
public function handle()
{
// 在命令行打印信息
$this->info('开始执行...');
file_put_contents('./write_time.txt', time() . "n", FILE_APPEND);
$this->info('执行结束...');
}
}
执行 php artisan list
可查看新增的指令:
image
手动执行一次
$ php artisan write:time-stamp
开始执行...
执行结束...
查看运行结果:
$ cat ./write_time.txt
1553669521
设置成计划任务
laravel的调度依然是需要借助crontab,但只需要设置一次即可
新增crontab
$ crontab -e
将以下内容加到crontab
# 注意将程序路径改为你自己的项目路径
* * * * * php artisan schedule:run >> /dev/null 2>&1
系统的 Cron 已经设定好了,现在 Cron 软件将会每分钟调用一次 Laravel 命令调度器,当 schedule:run
命令执行时, Laravel 会评估你的计划任务并运行预定任务。
image.png
app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
// 每分钟执行一次
$schedule->command('write:time-stamp')->everyMinute();
}
接下来,每分钟都会调用 write:time-stamp
指令
- javaSE基础之基本细节注解
- javaSE基础——常见的dos命令即其他
- 扫雷游戏制作学习过程
- JavaWeb学习之环境搭建
- Java初学之华容道游戏
- java基础学习之 消息对话款
- 暑假集训之专题----拓扑排序题解
- 李沐:从头开始介绍机器学习,眼花缭乱的机器学习应用
- hdu------2488Tornado(几何)
- nyoj------203三国志
- nyoj 115------城市平乱( dijkstra // bellman )
- hdu----(1847)Good Luck in CET-4 Everybody!(简单巴什博奕)
- hdu----(3118)Arbiter(构造二分图)
- hdu----(1528)Card Game Cheater(最大匹配/贪心)
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 新版RTSP协议视频流媒体平台EasyNVR首页播放器遮挡下拉框的问题优化
- CentOS系统下RTSP协议拉流视频平台EasyNVR端口如何穿透防火墙?
- 高吞吐量消息系统—kafka
- 国人开源了一款小而全的 Java 工具类库,厉害啊!!
- tf.session.run()单函数运行和多函数运行区别
- 使用 Tensorflow 在 CIFAR-10 二进制数据集上构建 CNN
- Hold Time违例,该如何解决
- Tensorflow BN详解:4_使用tf.nn.batch_normalization实现BN
- Tensorflow BatchNormalization详解:3_使用tf.layers高级函数来构建带有BN的神经网络
- 【DB宝17】使用mysqldump+mysqlbinlog恢复误删除的数据库
- 13-3 vi编辑模式和移动光标
- Tensorflow BatchNormalization详解:2_使用tf.layers高级函数来构建神经网络
- 使用 numpy 切分训练集和测试集
- 反向学习,相对基学习 opposition-based learning 简介
- python获取指定目录下所有文件名os.walk和os.listdir