PHP日记——Lavarel使用定时任务

作者: 饥渴计科极客杰铿 | 来源:发表于2017-01-16 14:08 被阅读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 * * * *表示每分钟执行一次 ,之后phpartisan都要写完整的路径,如果不知道php路径在哪可输入

    which php
    

    artisan路径为项目的根目录

    添加完再输入以下命令查看

    crontab  -l
    

    补充

    cron的语法

    分 小时 日 月 星期 命令
    0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)

    cron中几个特殊符号的含义

    "*"代表取值范围内的数字,
    "/"代表"每",
    "-"代表从某个数字到某个数字,

    相关文章

      网友评论

      • 孙燕超:怎么转发到我的简书
        zxwen_zl:@孙燕超 小伙儿这么好学 :yum:
        饥渴计科极客杰铿:@孙燕超 直接复制,然后自己再弄一下排版吧,或者复制html代码,网上有一些在线html转markdown

      本文标题:PHP日记——Lavarel使用定时任务

      本文链接:https://www.haomeiwen.com/subject/baqpbttx.html