提示,本文章是针对5.3版本

执行命令生成一个artisan命令,文件会在1app/Console/Commands目录下

php artisan make:command Tcm --command=Tcm:hello

Paste_Image.png

如果想在执行命令php artisan Tcm:hello的时候运行什么程序,就写在Tcm.php里面

image.png

但是这个时候执行是不会成功的

Paste_Image.png

因为我们只是创建了执行这个命令的类,但是并没有注册

我们来看laravel手册,创建之后需要注册

Paste_Image.png

Paste_Image.png

下面继续展示我的项目

Paste_Image.png

Tcm.php中$signature这个属性将是执行命令的最终属性

Paste_Image.png

Kernel.php中 $commands数组是注册的路由

Paste_Image.png

Paste_Image.png

这个时候 php artisan 或者 php artisan list查看列表

image.png

我们每次执行php artisan tcm:hello 会发现我们的数据库里会插入一条数据

5.2或者以前的话,注册完成后可能需要执行php artisan dump_autoload,加载下,但是5.3我发现这条命令已经没有了,而且我们也不需要执行

Paste_Image.png

运行artisan命令的时候,执行的代码是App\Console\Commands\Tcm.php里面的handle方法

image.png

2.创建消息订阅

首先我们随便发布一个消息 第一个参数是频道,第二个参数是内容

Paste_Image.png

php artisan make:command RedisSubscribe

Paste_Image.png

我们还像刚才一样把命令名称写下 比如我用了redis:subscribe

Paste_Image.png

然后我们在RedisSubscribe控制器订阅消息 第一个参数是频道名,第二个参数是消息内容

Paste_Image.png

这个时候我们查看我们的可执行命令

Paste_Image.png

然后我们开启订阅频道

Paste_Image.png

这个时候,我们不断的刷新http://45.119.97.156/(因为我刚才把发布消息放在了这个文件下),在终端就可以收到消息

Paste_Image.png

3.任务调度

首先进入crontab文件 vi /etc/crontab

Paste_Image.png

然后

Paste_Image.png

下面的两个是我写的,一个是每分钟写一个hello到tmp/aaa目录,另一个是执行php artisan schedule:run命令

五个星号从左到右分别是 分 时 后面的忘了

vi app/Console/Kernel.php进入这个文件,在schedule方法里面写任务

我自己随便写了一个任务,每分钟吧users表里面的amount,每分钟加1

相当于是执行了 php artisan schedule:run 代码之后,运行 schedule()方法里面的内容

我们在这个方法里面写了运行 tcm:test 指令

当我们手动执行一次 php artisan schedule:run

image.png

如果在项目终端直接执行 php artisan schedule:run,那么Kernel.php里面的schedule方法就会执行一次

把正确的结果输出到一个文件里面,错误的结果输出到另一个文件里面

加不加&符号,输出都会到/tmp/redis或者rediserr文件里面。但是加上&符号会直接在后台运行,不加&符号会一直在终端开启。

nohup php artisan redis:subscribe 1>>/tmp/resid 2 >> /tmp/rediserr &

加&符号和不加&符号的区别.png

执行artisan命令的时候,显示进度条

$pre = $this->option('pre'); 是执行命令的时候添加的参数

$this->info('sync pre points!'); 是执行命令后,在终端显示的信息。

下面这句话的意思是,敲命令的时候,带上 --pre 才会在终端显示'sync pre points!'这句话

$pre = $this->option('pre');

if ($pre) {

$this->info('sync pre points!');

}

注意

createProgressBar(count) 里面的参数是总进度条数,

我们每执行一次, $bar->advance();就会前进一点。如果我们执行的条数达不到createProgressBar(count)里面的总数,

比如我们总数执行了一般,那么就会在50%处停止。但是我们如果在循环外面写

$bar->finish();执行完毕后,总会是百分之百。所以我们最好将createProgressBar(count)的count参数写成我们执行条数的总数,这样才精确

php artisan nohup,artisan命令生成和redis消息订阅和任务调度相关推荐

  1. LiveGBS国标GB/T28181国标视频流媒体平台-功能报警告警订阅查询报警预案截图保存视频及REDIS消息订阅

    LiveGBS国标GB/T28181国标视频流媒体平台-功能报警告警订阅查询报警预案截图保存视频及REDIS消息订阅 1.报警信息 1.1.报警查询 1.2.配置开启报警订阅 1.2.1.国标设备编辑 ...

  2. php redis消息订阅与发布_PHP使用Redis实现订阅发布与批量发送短信

    原标题:PHP使用Redis实现订阅发布与批量发送短信 1 什么是redis订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息.直接点, ...

  3. 二十四 Redis消息订阅事务持久化

    Redis数据类型: Redis控制5种数据类型:String,list,hash,set,sorted-set 添加数据,删除数据,获取数据,查看有多少个元素,判断元素是否存在 key通用操作 JR ...

  4. Redis消息订阅发布

    Redis的发布订阅(pub/sub)是一种 消息通信模式 : 发送者(pub)发送消息,订阅者(sub)接收消息 redis客户端可以订阅任意数量的频道 消息发送者 频道 消息接收者 redis频道 ...

  5. php redis消息订阅与发布_PHP实现redis订阅和发布(用于异步任务处理)

    搜索热词 1.概念 名称及含义 channel频道:生产者和消费者直接操作的对象 publish生产者:向channel发送消息 subscribe消费者:订阅一个或多个channel psubscr ...

  6. php redis消息订阅与发布_php+redis 实现发布订阅功能

    前言 redis可以实现发布订阅和消息队列的功能.两者的区别在于订阅者可以是多个,且可以同时处理发布上来的消息,如果订阅者不在线(服务没有启动)消息将丢失,消息没有持久化.发布和订阅是一块执行的,缺少 ...

  7. 14. Redis 发布订阅-实现消息队列

    Redis 除了做缓存, 也可以做消息队列, 实现简单的消息的发布和订阅.Redis 消息订阅支持精确订阅和模糊订阅两种模式! 1. Redis 消息队列 1.1 Redis 消息队列特点 当有新消息 ...

  8. php module类,总结php artisan module常用命令

    module:make 创建一个新模块 module:use 使用一个模块(这允许执行其他命令时不用输入模块名) module:unuse 和上面相反 module:list 列出所有可用模块 mod ...

  9. php artisan dumpautoload,artisan 命令使用总结

    artisan 命令使用过程的一些记录! ==数据迁移== 之前一直对数据迁移很感兴趣,也看过了几遍文档,一直没怎么理解,也没怎么深入研究,今天得空,认真看了文档,百度了一些相关文章 点击这里,亲自试 ...

最新文章

  1. plsql developer 64位版本
  2. 十二个球称三次C语言编程,十二个球,有一个不知轻重,现有一个天平,称三次,找出此球!...
  3. 李洪强经典面试题37
  4. springmvc结合freemarker,非自定义标签
  5. TensorFlow tf.keras.layers.Embedding
  6. 基于 Groovy 的自动化构建工具 Gradle 入门(转)
  7. Java集合的框架和实现类
  8. 基于 React.js + redux + bootstrap 的 RubyChina 示例
  9. 编码器计数原理与电机测速原理——多图解析
  10. 视觉感知「挑战」天花板,多摄像头环绕方案同比增长近100%
  11. K60(Cortex-M4)开源开发探索(一)—— K60简介
  12. 宏观经济政策的六个争论问题 - 异想天开
  13. Mp3加3d 环绕声
  14. 千万级 PV是什么意思?
  15. Python Day4 循环关键字和练习【零基础】
  16. echarts折线图鼠标移入页面出现抖动
  17. 把SD卡制作为启动卡的操作步骤
  18. Android如何快速创建启动动画
  19. (Lightweight multi-scale aggregated residual attention networks for image super-resolution)阅读笔记
  20. Linux中用 grep查找特定进程,屏蔽grep进程本身(也就是不出现grep --color=auto)【转载】

热门文章

  1. [agc013d] Pilling Up
  2. 基于lucene的案例开发:纵横小说简介页采集
  3. QQ聊天对话框(Js实现,支持表情插入文本中间)
  4. 头条搜索下拉词怎么做?高粱seo实战告诉你答案
  5. 把握消费节点,精细服务助推喆啡酒店创优
  6. DRUCK德鲁克压力校验仪维修DPI620G-IS
  7. 天龙八部科举答题问题和答案(全4/8)
  8. 计算机中心那些事(四),计算机软考的那些事儿!
  9. linux下激活窗口 qt_Qt激活窗口
  10. 带符号的矩阵进行运算时,出现conj