Laravel5 (cli)命令行执行脚本及定时任务

2023-11-01

本文转自:http://www.cnblogs.com/chunguang/p/5660074.html


Artisan是Laravel自带的命令行接口名称,它提供了很多有用的命令想要查看所有可用的Artisan命令,可使用list命令查看:

1
php artisan list

每个命令都可以用help指令显示命令描述及命令参数和选项。想要查看帮助界面,只需要在命令前加上help就可以了,例如:

1
php artisan help migrate

除了Artisan提供的命令之外,还可以构建自己的命令。可以将自定义命令存放在app/Console/Commands目录;当然,也可以自己选择存放位置,只要改命令可以基于composer.json被自动加载。

要创建一个新命令,可以使用Artisan命令make:console,比如我要创一个发送邮件的artisan命令,可以这样:

1
php artisan  make :console SendEmails

上述命令将会生成一个类app/Console/Commands/SendEmails.php,当创建命令时,--command选项可用于分配终端命令名(在终端调用命令时用):

1
php artisan  make :console SendEmails -- command =emails:send

命令生成以后,需要填写该类的signaturedescription属性,这两个属性在调用list显示命令的时候会被用到。handle方法在命令执行时被调用,可以将所有命令逻辑都放在这个方法里面,我们可以在命令控制器的构造函数中注入任何依赖.这个SendEmails.php里面内容参考如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php  namespace  App\Console\Commands;
 
use  Illuminate\Console\Command;
 
class  SendEmails  extends  Command {
 
     /**
      * The console command name.
      *
      * @var string
      */
     protected  $name  'emails:send' ;
 
     /**
      * The console command description.
      *
      * @var string
      */
     protected  $description  '这是发邮件的命令.' ;
 
     /**
      * Create a new command instance.
      *
      * @return void
      */
     public  function  __construct()
     {
         parent::__construct();
     }
 
     /**
      * Execute the console command.
      *
      * @return mixed
      */
     public  function  handle()
     {
         //TODO:发送邮件逻辑
     }
 
}

$name是这个命令的名称,即artisan调用时的命令,如本例命令设为了emails:send,那么实际调用时要这么用:

1
php artisan emails:send

执行上面这条命令就是执行handle()方法,当然,这里还漏了一个非常重要的关键步骤,那就是需要把命令注入到app/Console/Kernel.php文件中,否则这个命令artisan是找不到的,示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php  namespace  App\Console;
 
use  Illuminate\Console\Scheduling\Schedule;
use  Illuminate\Foundation\Console\Kernel  as  ConsoleKernel;
 
class  Kernel  extends  ConsoleKernel {
 
     /**
      * The Artisan commands provided by your application.
      *
      * @var array
      */
     protected  $commands  = [
         'App\Console\Commands\Inspire' ,
         'App\Console\Commands\SendEmails' ,
     ];
 
     /**
      * Define the application's command schedule.
      *
      * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
      * @return void
      */
     protected  function  schedule(Schedule  $schedule )
     {
         $schedule ->command( 'inspire' )
                  ->hourly();
     }
 
}

关键就是在$commands里面把要用到的SendEmails类放进去,好了,这样就可以通过artisan命令来执行脚本了.

由于artisan命令需要在Laravel的目录里面才能执行,所以实际要用crontab调用artisan命令时需要注意Crontab的shell代码要这样写,切记非常重要,否则是执行了不会运行实际处理逻辑的.

1
30 1 * * *    php  /www/projects/laravelapp/artisan  emails:send

上面/www/projects/laravelapp/是项目的路径


定时任务:

Laravel有内置命令调度器,可以方便的实现Cron.

任务调度定义在app/Console/Kernel.php文件的schedule方法中,该方法已经包含了一个示例.Laravel里有两种方法执行Cron,第一种方法是让Cron每分钟调用Laravel命令调度,然后让Laravel来根据具体的命令来实现;需要在crontab里面加入如下内容:

1
* * * * * php  /path/to/artisan  schedule:run 1>>  /dev/null  2>&1
然后在上面的Kernel.php的schedule中添加任务

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel5 (cli)命令行执行脚本及定时任务 的相关文章

  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • 免费 PHP 登录库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 按文件名对 $_FILES 进行排序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 他俩 如您所知 在新的 HTML5 中 您可以非常轻松地上传多个文件 但我这里的问题是如何按列 名称 对 FILES 数组进行排序 这是
  • Yii2 - 错误请求 (#400) |前端和后端cookie

    仅当我打开时才会出现此问题frontend and backend在相同的browser 设想 与后端交互 gt 切换选项卡 gt 与前端交互 gt 切换选项卡返回 gt 与后端交互 gt 错误请求 400 Cookie 后端 identi
  • PHP - 如何获取主要 HTML 内容,例如 Firefox 中的阅读器模式

    在 android Firefox 应用程序和 safari iPad 中 我们只能通过 阅读器模式 阅读主要内容 阅读更多 http support mozilla org en US kb how enable reader mode
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 PHP 构建正确的 SOAP 请求

    我需要格式化 构建此 SOAP 服务 的请求 http api notificationmessaging com NMSOAP NotificationService wsdl http api notificationmessaging
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • 如何在 JavaScript 中创建服务器端进度指示器?

    我想在我的网站中创建一个部分 用户可以在其中进行一些简单的操作update纽扣 这些中的每一个update按钮将发送到服务器 并在幕后进行长时间的处理 当服务器处理数据时 我希望用户有某种进度指示器 例如进度条或文本百分比 我使用 jQue
  • 如何将表中不存在但原始SQL中存在的实体字段设置为别名?

    假设我们有一个这样的查询 SELECT CUSTOM EXPRESSION as virtualfield FROM users 用户的实体本身具有 虚拟字段 但映射注释没有 因为表没有该字段 假设它作为原始 SQL 执行 我们如何使用上面
  • 覆盖 FOS 用户包中的“更改密码”模板

    我做了一些研究 遗憾的是找不到任何帮助 因此 我将 FOSUserBundle ChangePasswordAction 渲染到我的模板中 但它显示供应商提供的默认模板 我的渲染控制器的模板 block body h2 Einstellun
  • docker 中的 php Curl 冲突 CURLOPT_FILE 和 CURLOPT_RETURNTRANSFER

    当我使用curl时CURLOPT FILE and CURLOPT RETURNTRANSFER选项 文件为空 没有任何curl错误 fp fopen saveTo w ch curl init fileUrl curl setopt ch
  • 是否可以用 PHP 编写电子邮件解析器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Facebook PHP-SDK 页面刷新后似乎丢失了 userID

    我似乎登录工作正常 我可以登录 接受应用程序 第一次 然后显示用户信息 例如姓名 图片 等 然而 当我刷新页面时 userid 又回到 0 我必须再次登录 我不确定问题是什么 我必须在每次页面加载时重新启动它还是什么 我不知道 我会发布一些
  • 使用 PHP 从 Mongo 解码 JSON

    我已经看过这个线程 PHP 解码嵌套 JSON https stackoverflow com questions 3555335 php decode nested json并没有设法用它来解决我的问题 我目前正在从 Mongo 获取 J
  • PHP 检查当前日期是在设定日期之前还是之后

    我从数据库中提取一个日期 其格式为 dd mm YYYY 我想做的是检查当前日期 如果当前日期早于数据库中的日期 则需要打印数据库日期 如果是在之后 则需要打印 继续 有人能指出我正确的方向吗 if strtotime database d
  • 使用会话 php 创建 cookie?

    我使用会话来登录我网站中的用户 问题是 我想让用户remember密码 因此关闭 打开浏览器后他们不需要再次登录 我需要使用 cookie 和 session 来实现它吗 my code user POST user pass POST p
  • 在本地 SDK 服务器上工作时,实时 Google App Engine 上出现 404

    我已经在GAE标准环境上部署了几个PHP应用程序 一切正常 现在我正在部署一个新应用程序 该应用程序位于由gcloudSDK按预期工作 终端命令 dev appserver py log level warning app yaml 问题是
  • 通过 htaccess 将 PNG 解析为 PHP 仅适用于本地服务器,但不适用于网络服务器

    我用 PHP 创建了一个动态 PNG 图片 为了使用 PNG 扩展名 我创建了一个包含以下内容的 htaccess 文件 AddType application x httpd php png 在我的本地 XAMPP 服务器上 一切工作正常
  • Laravel 4 使用资源控制器轻松删除记录

    我是 Laravel 框架的新手 但我真的很喜欢它 我最大的问题是我一直在寻找如何使用资源控制器删除单个记录 控制器方法 public function destroy id department Department find id de

随机推荐

  • python基础学习--基础

    一 基础知识 1 1 基础语法及编码规范 1 定义变量加if Python 通常是一行写完一条语句 但如果语句很长 我们可以使用反斜杠 来实现多行语句sad total item one item two item three item f
  • 二极管(一):反向恢复时间

    一 反向恢复过程 在图1所示的二极管电路中 加入一个如图2所示的输入电压 即在 0 时间内 输入为 二极管导通 电路中有电流流过 假设二极管的正向压降为 当 远大于 时 可忽略不计 如果在 时刻 输入 突然从 变为 在理想情况下 二极管将即
  • 一文让你彻底了解Linux内核文件系统(大总结)

    一 文件系统特点 文件系统要有严格的组织形式 使得文件能够以块为单位进行存储 文件系统中也要有索引区 用来方便查找一个文件分成的多个块都存放在了什么位置 如果文件系统中有的文件是热点文件 近期经常被读取和写入 文件系统应该有缓存层 文件应该
  • 一百零八、Kettle采集Kafka数据到HDFS(踩坑,亲测有效)

    Kafka到HDFS 除了用Kafka API和flume之外 还可以用kettle 最大优点是不用写代码 版本 Kettle版本 8 2 Hadoop版本 3 1 3 前提 详情请看鄙人的一百零一 Kettle8 2 0连接Hive3 1
  • Python实现支持人机对战的五子棋软件(超详细)

    完整工程下载链接 文章目录 利用pygame实现一个支持双人对战以及人机对战的小游戏 最终效果展示 总体框架介绍 具体功能以及算法思想 一 主界面与棋盘设计 二 移位与胜负判定 三 棋型价值设计 四 人机模式和双人模式的设计 五 游戏状态
  • 使用PHPExcel实现Excel文件的导入和导出

    在之前有写过一篇文章讲述了使用 PHP快速生成excel表格文件并下载 这种方式生成Excel文件 生成速度很快 但是有缺点是 1 单纯的生成Excel文件 生成的文件没有样式 单元格属性 填充色 宽度 高度 边框颜色 不能自定义 2 生成
  • java.lang.unsatisfiedlinkerror解决方法

    有时候我们接入第三方sdk的时候 同时导入了一些so库 编译运行后发生会报以下异常 java lang unsatisfiedlinkerror 解决方法 在主工程app的build gradle中加入以下代码 作用是指定so库的位置 an
  • python自动拷贝日志

    usr bin env python import os import time import re import os from time import sleep cmd3 adb pull resources map BaiduMap
  • MacBook配置Chromedriver

    最近换了mbp 之前的项目中包含了Chromedriver 但是我不想设置path了 所以重新配置了下Chromedriver 先看自己浏览器版本 去下载对应版本的Chromedriver ChromeDriver WebDriver fo
  • php怎么接收用户字符,PHP把用户的提交cookie转成字符串

    小编这次带来的是这种cookie类型的获取方式哦 当你想获取cookie字符串时 gt 偷懒 gt 搜索引擎查询好久 gt 没找到 gt 哎 gt 无奈只能自己写啦 gt 原理 用户访问 带cookie gt 获取cookie数组 gt 获
  • 解决flink消费kafka过期数据和目前存量数据的计算(未来的方向)

    背景 目前公司业务需要统计超过7天以上的特征统计 但是kafka只存7天的数据 如果只想通过flink sql去计算30天的用户特征要求当天生效 这是完不成的 但是看到下面的分享 感觉未来的方向有了 一 2021 Apache Flink
  • mysql同时执行多条语句_让MySQL同时执行多条SQL语句的解决办法

    版权声明 本文为博主原创文章 未经博主允许不得转载 最近做一个MySQL方面的东西发现了这个问题 就是在一个Statement中执行一条SQL语句的时候可以正确执行 如果同时执行多条 就会报SQL语法错误 伤透了脑筋 经过网上查找 发现有两
  • 纯电阻电路中的等效变换

    目录 1 电阻的串并联等效 1 串联 2 并联 2 Y形联结和 形联结的等效变换 1 Y gt 2 gt Y 3 实际电源的两种模型及其等效变换 1 实际电压源模型 2 实际电流源模型 3 两种模型间的等效变换 4 受控源的等效 等效的核心
  • 虚拟机安装服务器2008,VMware Workstation 虚拟机安装64位windows 2008 R2 系统

    偶看现在使用的电脑是 惠普 康柏 Elite 8300 MT Mini Tower 操作系统 Windows 7 旗舰版 64位 基本硬件展示 处理器 英特尔 第三代酷睿 i5 3470 3 20GHz 四核 主板 惠普 3397 内存 8
  • Java基础(03)——Java语法结构(顺序与选择结构)

    Java中的语法结构 版权声明 Java中的语法结构 1 顺序结构 2 选择结构 1 简单的if语句 2 if else 语句 3 多分支if语句 4 switch case语句 版权声明 本文原创作者 清风不渡 博客地址 https bl
  • 免费好用的虚拟服务器,六大免费好用的虚拟主机管理系统

    虚拟主机的出现 是适应了现在互联网发展的需要才出现的 现在的市场中 中小型企业占据多数 而中小型企业又不能花费大量资金用来租用服务器建设网站 所以出现了功能完整价格低廉的虚拟主机 虚拟主机是通过专用的软件程序把一台服务器分割成为多个不同的虚
  • nginx文件服务器文件日期,nginx文件目录服务器

    用nginx配置一个文件服务器 并解决中文乱码问题 配置文件 server listen 80 server name downloadapp 3vyd com location add header Access Control Allo
  • 查看Python安装路径几种方法

    查看Python安装路径方法 在使用python的时候 有时候会需要找到python包的安装位置 怎么办 对于Windows平台 打开cmd 使用命令py 0p 其中0是零 显示已安装的 python 版本且带路径的列表 参见下图 其中带星
  • 记录一下项目中遇到的有关websocket延迟的问题

    想想就觉得好笑 事情呢是这个样子的 我们项目采用的事Spring websocket stomp 实现的导检功能的项目 需要很多设备和服务器进行交互 项目在公司和其他环境部署运行都没有任何问题 也就是说从来没遇到过websocket延迟的问
  • Laravel5 (cli)命令行执行脚本及定时任务

    本文转自 http www cnblogs com chunguang p 5660074 html Artisan是Laravel自带的命令行接口名称 它提供了很多有用的命令想要查看所有可用的Artisan命令 可使用list命令查看 1