很多项目中会用到自动执行脚本的功能,

例如,自动统计上个月的注册用户,定时生成 csv 文件并邮箱发送给客户等等。

Laravel 中的任务调度,可实现定时任务,

结合自定义 artisan 命令,即可实现自动执行自定义脚本。

一、创建命令

1、artisan 创建

php artisan make:command DataCollect --command=data-collect

  上面的命令,会在 app/Console/Commands 目录下,自动创建一个命令类 DataCollect。

  执行 data-collect 命令就会调用命令类的代码。

2、打开类文件设置 signature 和 description 属性

3、在 handler 方法中编写逻辑。

  使用 php artisan data-collect 命令来调试

二、定义 artisan 命令调度

1、在 App\Console\Kernel 类的 schedule 方法中定义所有的调度任务

$schedule->command('data-collect')->monthly();  

调度 data-collect 命令,每个月调度一次。

2、设置调度频率、时间限制、环境限制、时区限制

  详细设置信息见 Laravel 文档,https://learnku.com/docs/laravel/6.x/scheduling/5169

3、避免任务重复

  执行任务时会生成临时锁文件,避免任务重复。

  锁文件默认在 24 H 后失效。

  自定义过期时间 ->withoutOverlapping(10)

4、任务放到后台执行

  有多个任务同时执行时,默认会顺序执行。

  把任务放在后台,则可以同时进行 ->runInBackground()

5、任务输出

  通常为了记录 batch 执行情况,会写 log 文件。

  设置 log 文件位置 ->sendOutputTo($filePath) 、->appendOutputTo($filePath)

  batch 执行情况,通过邮箱通知开发者 ->emailOutputTo('foo@example.com')

  只在失败的时候送信 ->emailOutputOnFailure('foo@example.com')

6、batch 执行前后执行特定代码

->before(function () {
// 任务即将开始...
}) ->after(function () {
// 任务完成...
}); ->onSuccess(function () {
// 任务成功...
}) ->onFailure(function () {
// 任务失败...
});

三、启动调度器

1、登录服务器,crontab -l 查看设置的定时任务。

2、crontab -e 编辑定时任务。

* * * * * /usr/local/php/bin/php /var/www/jpmt_dev/artisan schedule:run >> /dev/null >&

  前面的 * 表示每分钟执行一次

  php 表示用 PHP 解析后面的文件,最好写全路径,避免找不到

  artisan 表示项目中 artisan 命令的路径

3、编辑好后,就会自动执行上面创建的命令了。

  查看 cron log 文件,/var/log/cron

Laravel —— batch 实现的更多相关文章

  1. PHP框架 Laravel Eloquent ORM 批量插入数据 && 批量更新目前没有

    foreach ($products as $v=>$a) { $count[] = array('product_name' => $a['name'], 'product_weight ...

  2. laravel小抄

    原文地址:http://cheats.jesse-obrien.ca/ Artisan // Displays help for a given command php artisan --help ...

  3. Laravel Cheat 表 http://cheats.jesse-obrien.ca/#

    Laravel Cheat Sheet Toggle Code Comments PDF Version Github Laravel 3 Docs Laravel 4 Docs Artisan ph ...

  4. Laravel API Tutorial: How to Build and Test a RESTful API

    With the rise of mobile development and JavaScript frameworks, using a RESTful API is the best optio ...

  5. 30分钟用 Laravel 实现一个博客

    介绍 Laravel 是一款 MVC架构. 目前最流行的 PHP框架. Laravel的优点在于: 丰富的composer类库支持, 优雅的代码, 未来的主流框架(目前市场占有率最高的框架) Lara ...

  6. TODO:Laravel增加验证码

    TODO:Laravel增加验证码1. 先聊聊验证码是什么,有什么作用?验证码(CAPTCHA)是"Completely Automated Public Turing test to te ...

  7. TODO:Laravel 内置简单登录

    TODO:Laravel 内置简单登录 1. 激活Laravel的Auth系统Laravel 利用 PHP 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管 ...

  8. TODO:Laravel 使用blade标签布局页面

    TODO:Laravel 使用blade标签布局页面 本文主要介绍Laravel的标签使用,统一布局页面.主要用到到标签有@yield,@ stack,@extends,@section,@stop, ...

  9. TODO:搭建Laravel VueJS SemanticUI

    TODO:搭建Laravel VueJS SemanticUI Laravel是一套简洁.优雅的PHP开发框架(PHP Web Framework).可以让你从面条一样杂乱的代码中解脱出来:它可以帮你 ...

随机推荐

  1. 【转】【bat】Bat 中特殊符号

    批处理.Bat 中特殊符号的实际作用,Windows 批处理中特殊符号的作用: @\\隐藏命令的回显. ~\\在for中表示使用增强的变量扩展:在set中表示使用扩展环境变量指定位置的字符串:在set ...

  2. 【转】pdf文件自动切白边

    pdf文件自动剪裁(自动切白边) FROM:http://www.ai7.org/wp/html/754.html 可能用到的环境.工具:Ubuntu 10.04+TeXLive 2008+pdfcr ...

  3. Docker容器安装配置SQLServer服务(Linux)

    一:前言 随着不断的对Docker容器的实践和学习,越来越觉得容器的强大,把 SQL Server 数据库服务放在docker容器中,比你自己在宿主服务器上面安装配置一个SQL Server服务器是要 ...

  4. FastReport For Delphi7 通用安装方法

    安装前请册除原有的FR控件. 1. "Tools|Environmet options..."中的"Library"标签面下"Library path ...

  5. C++实现 企业信息管理系统

    2.1总体需求 ​ 2.2管理需求 ​ ​ 3.总体架构 ​ 由于代码量比较大,请移步GitHub或码云 码云:传送门 , GitHub:传送门 话不多说,直接上效果 我是在Linux Ubuntu1 ...

  6. Django开发之登陆和登出

    使用django自带的验证模块 1.首先使用python manage.py startapp models为当前项目添加一个应用. 2.在setting.py中INSTALLED_APPS后面添加' ...

  7. Jenkins+Gitlab配置Webhook实现提交自动部署

    一.概述 在上一篇文章,链接如下: https://www.cnblogs.com/xiao987334176/p/11434849.html 已经实现了 Jenkins+harbor+gitlab+ ...

  8. 打家劫舍I

    题目描述(LeetCode) 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系 ...

  9. C# vb .net图像合成-合成星形

    在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...

  10. css3 media媒体查询器用法总结(附js兼容方法)

    css3 media媒体查询器用法总结 标签:class   代码   style   html   sp   src 随着响应式设计模型的诞生,Web网站又要发生翻天腹地的改革浪潮,可能有些人会觉得 ...