Laravel5 (cli)命令行执行脚本及定时任务
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 |
命令生成以后,需要填写该类的signature
和description
属性,这两个属性在调用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,那么实际调用时要这么用:
执行上面这条命令就是执行handle()方法,当然,这里还漏了一个非常重要的关键步骤,那就是需要把命令注入到
|