我正在尝试设置一个调度程序,用于每周在laravel备份数据库。我创建了一个命令,并填写了一些数据,如命令本身和描述,并将其注册到控制台内核中。问题是文件从未被创建和/或存储在.中。
这是代码的一部分,其中包含命令:
public function handle()
{
Log::info('Database backup completed.');
$filename = 'mysite' . Carbon::now()->format('Y-m-d') . ".gz";
$command = "mysqldump --user=" . env('DB_USERNAME') ." --password=" . env('DB_PASSWORD') . " --host=" . env('DB_HOST') . " " . env('DB_DATABASE') . " | gzip > " . storage_path() . "/app/backup/" . $filename;
$returnVar = NULL;
$output = NULL;
exec($command, $output, $returnVar);
}这是核心部分:
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
OtherCron::class,
DatabaseBackupCron::class,
];
/**
* Define the application's command schedule.
*
* @param Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('othercron')->dailyAt('00:00');
$schedule->command('database-backup:cron')->everyFiveMinutes();
}注意事项:我使用"->everyFiveMinutes()“只是为了测试目的:)
发布于 2022-09-11 06:40:36
我试过你的代码,它对我有用,唯一的区别是内核,我这样写。
protected $commands = [
'App\Console\Commands\DatabaseBackUp'
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
//some other commands
$schedule->command('database:backup')->weekly();
}现在,当我运行php artisan database:backup文件时,在存储文件夹中创建扩展名为.zp的文件。

发布于 2022-06-07 12:06:01
php artisan make:command DatabaseBackUp使用此命令使数据库备份文件。
app/Console/Commands/DatabaseBackUp.php
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Carbon\Carbon;
class DatabaseBackUp extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'database:backup';
/**
* 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 int
*/
public function handle()
{
$filename = "backup-" . Carbon::now()->format('Y-m-d') . ".gz";
$command = "mysqldump --user=" . env('DB_USERNAME') ." --password=" . env('DB_PASSWORD') . " --host=" . env('DB_HOST') . " " . env('DB_DATABASE') . " | gzip > " . storage_path() . "/app/backup/" . $filename;
$returnVar = NULL;
$output = NULL;
exec($command, $output, $returnVar);
}
}在这个步骤中,我们需要在您的存储文件夹中创建“备份”文件夹。您必须在以下路径上创建“备份”:
storage/app/backup现在,在这个步骤中,我们需要安排我们创建的命令。因此,让我们按照如下所示更新内核文件:
app/Console/Kernel.php
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
'App\Console\Commands\DatabaseBackUp'
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('database:backup')->daily();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}您可以检查以下命令,以便使用此命令获得数据库备份:
php artisan database:backupT将在备份文件夹上创建一个备份文件。你可以去那里看看。
现在,我们已经准备好在服务器上安装cron了。
最后,您可以在调度任务时管理此命令,您必须在服务器的crontab文件中添加一个条目:
运行以下命令:
crontab -ehttps://stackoverflow.com/questions/72530789
复制相似问题