我刚刚学习了如何创建一个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();
}
问:如何每天自动执行命令?
2条答案
按热度按时间j0pj023g1#
如果您在localhost中,则应运行以下命令:
或者,如果您在主机上,请将此命令添加到您的cron作业中,并将其设置为每分钟运行一次:
vcirk6k62#
您必须将计划添加到cron作业。
在你的面板中设置每分钟
path/to/php artisan schedule:run
,它将按照你指定的方式运行命令。如果在本地运行计划,则可以使用
php artisan schedule:work