laravel artisan 后台运行_3分钟短文:Laravel用户自定义命令行简明教程
引言
完成一个功能需求,有时候并不需要一个界面UI,比如定时任务,后台任务, 对于这类任务往往比较耗时,在一个web页面生命周期内,要拖的很久。这时候我们 需要将其放在后台交给操作系统执行。
本期说一说laravel中,自建命令行的简要方法。
代码时间
在laravel中命令行被称作Artisan类,你可以很轻松地使用自带的脚手架创建一个命令行文件。 我们使用欢迎新用户这样的一个假设需求做示例:
php artisan make:console WelcomeNewUsers --command=email:newusers
这样就会在目录 app/Console/Commands/ 下创建一个 WelcomeNewUsers.php 文件。 我们来看一下这个文件长啥样。首先是头部的命名空间,和类引用:
namespace AppConsoleCommands;
use IlluminateConsoleCommand;
然后是类的内容:
class WelcomeNewUsers extends Command
{protected $signature = 'email:newusers';protected $description = 'Command description';public function __construct(){parent::__construct();}public function handle(){//}
}
为了演示,我们把注释都给去掉了。其中 $signarute 就是命令行中 --command 所声明的形式。 属性 $description 是命令的描述。
我们的业务逻辑,在 handle() 方法内实现就可以了。
要让这个命令行可以调用,需要手动注册,在 app/Console/Kernel.php 文件的添加如下内容:
protected $commands = [AppConsoleCommandsWelcomeNewUsers::class,
];
这样就可以在应用根目录下,打开命令行,输入以下命令:
php artisan email:newusers
因为没有任何逻辑代码,执行会顺利结束,且没有任何提示信息。 现在我们给 handle 方法内添加一些业务逻辑代码:
User::signedUpThisWeek()->each(function ($user) {Mail::send('emails.welcome',['name' => $user->name],function ($m) use ($user) {$m->to($user->email)->subject('Welcome!');});
});
注意上面的代码,我们默认省略了一些语法糖。首先是一个User模型的本地作用域,
public funciton scopeSignedUpThisWeek($query)
{return $query->where('signed_at', '>=', Carbon::now()->startOfWeek());
}
另外还有一个类和方法 Mail::send() 是用于邮件发送的,我们在其他篇幅再做介绍。
经过上面的代码,我们每次调用
php artisan email:newusers
的时候,都会把数据库中本周注册的新用户拉取出来,挨个发送email。
写在最后
本文通过演示为新用户发送邮件的需求,使用命令行创建文件, 并在命令行处理方法内书写逻辑代码。为大家演示了laravel命令行最初步的用法。 通常我们在命令行中会有参数传递,也极为常见,下文我们为大家演示。
Happy coding :-)
我是@程序员小助手,持续分享编程知识,欢迎关注。
laravel artisan 后台运行_3分钟短文:Laravel用户自定义命令行简明教程相关推荐
- mvc 前段定义变量_3分钟短文 | Laravel blade模板里优雅地定义PHP变量
引言 Laravel秉持MVC的设计理念,在V = view 中放置视图相关的内容.特别是 blade 模板引擎带来了很强大的解析方式. 与传统的PHP与HTML写作一团方式不容,Blade 使用特定 ...
- laravel $request 多维数组取值_3分钟短文 | Laravel 内3种数据校验的写法,你喜欢哪一个?...
引言 web应用程序公开访问几乎没有不带用户交互的,难免要接收用户输入的奇奇怪怪的东西.对于后端程序,必须对输入的内容进行有效性过滤. 这就是本文的重点,说一说laravel中输入请求的校验. 学习时 ...
- sql查询无结果返回空_3分钟短文 | Laravel 查询结果检查是不是空,5个方法你别用错...
引言 Laravel 提供了 Eloquent ORM 对象用于操作数据库,将其进行抽象方便操作. 因为设计的灵活度,大家在使用Model查询数据集的时候,会面临结果为空,记录不存在的问题, 那么如何 ...
- 语句作用_3分钟短文:Laravel模型作用域,为你“节省”更多代码
引言 原则上代码写一次,处处是引用,不需要大量的冗余代码,这是一种趋势,也是提高代码健壮性的努力方向. laravel模型为我们提供了一层数据库操作层,将数据交互独立出来. 但是久而久之,随着项目的需 ...
- 想让进程后台运行,试试Linux的nohup命令,3分钟学会。
作者 | 恋猫大鲤鱼 来源 | https://dablelv.blog.csdn.net/article/details/79985071 1.命令简介 nohup 的作用可以将程序以忽略挂起信号( ...
- php 时间格式化_3分钟短文 | PHP获取函数的代码片段,唯有反射最高效
引言 为了演示上一篇我们所说的PHP中反射的应用,本篇接着讲反射的应用.因为其特性,是操作函数和方法的,是函数的操作者,类的操作者,所以显得格外重要. 我们从一个小需求出发,假如有一段这样的代码: f ...
- java swing运行没反应_java – 无法从命令行运行swing
我在 windows中使用命令行来编译然后执行我的 java程序.我已经去了 http://java.sun.com/docs/books/tutorial/uiswing/start/compile ...
- VS运行C语言代码,cmd命令行窗口一闪而过
在vs2013里面运行写好代码,运行的窗口一闪而过 常见解决方法有两种 方法一: 修改当前项目配置 鼠标右键单击当前项目,在弹出窗口中选中"属性" 再在VS中使用 ctrl + F ...
- request用法_3分钟短文:说说Laravel页面会话之间的数据保存Session用法
引言 我们知HTTP请求是没有状态的,两个请求之间没有直接的关联关系.但大多数情况下, 我们需要保持用户的会话间数据的连续性,这时,为了数据安全起见, 有必要在服务器上临时存储一些上下文数据了. 这就 ...
最新文章
- python小工具封装_python接口自动化(二)——封装需要用到的工具类
- spock_将Spock 1.3测试迁移到Spock 2.0
- 送你一份 Nginx 最佳入门手册
- Socket SSL通讯
- 【DP】[ZJOI2008][HYSBZ/BZOJ1037]生日聚会Party
- “非”天才女程序员的人生
- 多层感知机 深度神经网络_使用深度神经网络和合同感知损失的能源产量预测...
- Flink 集群搭建安装 CentOS 7.x 版本
- VBA读取word中的内容到Excel中
- C# DES 加解密
- rails logger 和 session, cookies, request方面的笔记
- 移动招聘笔试计算机类,2017中国移动校园招聘考试备考资料―计算机类习题三...
- 3D游戏引擎技术剖析
- 简单谈谈自己对前端的感想
- 传感器相关 MPU9250
- Python3 插入排序
- ie主页被劫持怎么办 解决浏览器主页劫持方法
- MIUI12 for OnePlus 7T 使用钱包app 的尝试
- python导出结果_Python连接Oracle数据查询导出结果
- 【从0到1搭建LoRa物联网】6、国产LoRa终端ASR6505 I2C接口
热门文章
- 2440,6410,210存储器接口比较
- windows nt service 框架
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- java中的strictfp的作用
- Oracle Purge和drop的区别
- react native 生成APK
- OpenCV Cut Image via ROI 根据兴趣区域剪裁图片
- 《妥协的完美主义—优秀产品经理的实践指南(卷一)》一2.4 分工常见的错误...
- 【规范】前端编码规范——css 规范
- IOS 中runtime 不可变数组__NSArray0 和__NSArrayI