PHP日记——Lavarel使用定时任务
2017-01-16 本文已影响177人
饥渴计科极客杰铿
在业务开发中总会遇到定时任务这种需求,如果要定时不断地执行某句php命令的话则需要用到定时任务
创建命令
php artisan make:console HelloLaravelAcademy --command=laravel:academy
其中HelloLaravelAcademy是命令名,laravel:academy是控制台执行的命令,类似make:console。
执行完成后,会在app/Console/Commands目录下生成一个HelloLaravelAcademy.php文件:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class HelloLaravelAcademy extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'laravel:academy';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
}
}
其中$signature
即为在控制台执行的命令名,$description
为命令描述,handle方法为执行命令时调用的方法。
接下来我们简单编写handle方法如下:
public function handle()
{
echo "Hello LaravelAcademy\n";
}
运行命令
在运行命令前需要将其注册到App\Console\Kernel的$commands属性中:
protected $commands = [
... //其他命令类
\App\Console\Commands\HelloLaravelAcademy::class
];
接下来我们就可以在控制台运行如下Artisan命令:
php artisan laravel:academy
终端就会打印出:
Hello LaravelAcademy
设置定时任务
输入命令
crontab -e
在文档的末尾输入
*/1 * * * * /usr/bin/php /home/xjk/php/leguanzhu/artisan laravel:academy 1>> /dev$> /dev/null 2>&1
该句为cron语句,前面的*/1 * * * *
表示每分钟执行一次 ,之后php和artisan都要写完整的路径,如果不知道php路径在哪可输入
which php
artisan路径为项目的根目录
添加完再输入以下命令查看
crontab -l
补充
cron的语法
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)
cron中几个特殊符号的含义
"*"代表取值范围内的数字,
"/"代表"每",
"-"代表从某个数字到某个数字,