laravel编写Console定时脚本

一:
app\Console\Commands目录下创建脚本文件TestConsole.php


namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\Base\CommonPoolMethod;
//连接数据库可引入数据库相关类

class TestConsole extends Command
{
    use CommonPoolMethod;

    /**
     * The name and signature of the console command.
     *	update:artisan下命令组,可使用【php artisan -v】或【php artisan list】查看
     *	test_function :解释命令作用(随意)
     *	完整命令【php artisan update:test_function】
     * @var string
     */
    protected $signature = 'update:test_function';
	
    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = "更新测试方法";

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }



    public function handle()
    {
       //编写脚本方法
    }

}

二:Console\Kernel.php文件中引入命令

//新增【必须】
use App\Console\Commands\TestConsole;

	protected $commands = [
		//新增【必须】
		TestConsole::class,
	];

	//定时任务【可选,定时任务时添加】
    protected function schedule(Schedule $schedule)
    {
    	//每天1点执行一次
        $schedule->command('update:test_function')->dailyAt('1:00');
    }

三:测试任务是否成功【php artisan list】
列出全部任务命令,若存在【update:test_function】命令,证明任务创建成功;若不存在,证明创建失败

四:laravel根目录下执行artisan命令【php artisan update:test_function】

注:执行命令报错【SQLSTATE[HY000] [2002] No such file or directory 】
原因:未找不到mysql.sock文件
解决:
1:打开MySQL管理工具,执行sql语句 【show variables like ‘%sock%’】,得到一个目录【/Applications/MAMP/tmp/mysql/mysql.sock】

2:找到 ./config/database.php 中的 unix_socket,修改【‘unix_socket’ => ‘/Applications/MAMP/tmp/mysql/mysql.sock’】

或者

.env中对应的DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

五:定时任务相关:


->cron('* * * * *');	自定义 Cron 计划执行任务
->everyMinute();	每分钟执行一次任务
->everyFiveMinutes();	每五分钟执行一次任务
->everyTenMinutes();	每十分钟执行一次任务
->everyFifteenMinutes();	每十五分钟执行一次任务
->everyThirtyMinutes();	每三十分钟执行一次任务
->hourly();	每小时执行一次任务         
->hourlyAt(17);	每小时第 17 分钟执行一次任务
->daily();	每天 0 点执行一次任务
->dailyAt('13:00');	每天 13 点执行一次任务
->twiceDaily(1, 13);	每天 1 点及 13 点各执行一次任务
->weekly();	每周日 0 点执行一次任务
->weeklyOn(1, '8:00');	每周一的 8 点执行一次任务
->monthly();	每月第一天 0 点执行一次任务
->monthlyOn(4, '15:00');	每月 4 号的 15 点 执行一次任务
->quarterly();	每季度第一天 0 点执行一次任务
->yearly();	每年第一天 0 点执行一次任务
->timezone('America/New_York');	设置时区
->weekdays();	限制任务在工作日执行
->weekends();	限制任务在周末执行 
->sundays();	限制任务在周日执行
->mondays();	限制任务在周一执行
->tuesdays();	限制任务在周二执行
->wednesdays();	限制任务在周三执行
->thursdays();	限制任务在周四执行
->fridays();	限制任务在周五执行
->saturdays();	限制任务在周六执行
->between($start, $end);	限制任务在 $start$end 区间执行->hourly()->between('7:00', '22:00');
->when(Closure);	限制任务在闭包返回为真时执行
->environments($env);	限制任务在特定环境执行
->withoutOverlapping();	避免任务重复执行

六:服务器启动定时任务

#列出全部任务
crontab -l
#编辑任务
crontab -e
#新增以下任务

#每分钟执行一次
#/www/server/php/73/bin/php 【php 的运行配置文件所在路径】
#/www/project【项目根目录】
* * * * * /www/server/php/73/bin/php /www/project/artisan schedule:run >> /dev/null 2>&1

你可能感兴趣的:(PHP,laravel,php)