php Laravel:是否可以每天自动运行cron作业?

xu3bshqb  于 2023-03-28  发布在  PHP
关注(0)|答案(2)|浏览(163)

我刚刚学习了如何创建一个cron作业,现在我想每天自动执行这个命令。
在我的内核文件中,我声明了everyMinute,但是当我检查路径时,它没有备份文件

DbBackupDaily

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class DbBackupDaily extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'db:backupdaily';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Create Database Backup Daily';

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

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $file_name = "backup_".strtotime(now()).".sql";
        $command = "D:/wamp64/bin/mysql/mysql5.7.31/bin/mysqldump.exe --user=".env('DB_USERNAME')." --password=".env('DB_PASSWORD')." --host=".env('DB_HOST')." --port=".env('DB_PORT')." ".env('DB_DATABASE')." > ".storage_path()."/app/public/backup/".$file_name ;
        exec($command);

    }
}

内核

protected $commands = [
        "App\Console\Commands\DbBackupDaily",
        "App\Console\Commands\DeleteDbBackupMonthly"
    ];

    protected function schedule(Schedule $schedule)
    {
        // $schedule->command('inspire')->hourly();
        $schedule->command('db:backup')->everyMinute();
        $schedule->command('db:deletebackupmonthly')->monthly();

    }

问:如何每天自动执行命令?

j0pj023g

j0pj023g1#

如果您在localhost中,则应运行以下命令:

php artisan schedule:work

或者,如果您在主机上,请将此命令添加到您的cron作业中,并将其设置为每分钟运行一次:

/usr/local/bin/php /path-to-project/artisan schedule:run >> /dev/null 2>&1
vcirk6k6

vcirk6k62#

您必须将计划添加到cron作业。
在你的面板中设置每分钟path/to/php artisan schedule:run,它将按照你指定的方式运行命令。
如果在本地运行计划,则可以使用php artisan schedule:work

相关问题