結(jié)合Laravel特性,通過使用 artisan 命令進(jìn)行封裝,在定時(shí)任務(wù)中,做到非常方便的數(shù)據(jù)庫備份
備份命令
php artisan make:comman命令來創(chuàng)建一個(gè)自定義命令
php artisan make:comman BackupDatabase
如下填寫app\Console\Commands\BackupDatabase.php
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
class BackupDatabase extends Command
{
protected $signature = 'db:backup';
protected $description = 'Backup the database';
protected $process;
public function __construct()
{
parent::__construct();
$this->process = new Process(sprintf(
'mysqldump -u%s -p%s %s > %s',
config('database.connections.mysql.username'),
config('database.connections.mysql.password'),
config('database.connections.mysql.database'),
storage_path('../../backup.sql') //生成到項(xiàng)目文件夾外
));
}
public function handle()
{
try {
$this->process->mustRun();
$this->info('The backup has been proceed successfully.');
} catch (ProcessFailedException $exception) {
$this->error('The backup process has been failed.');
}
}
}
定時(shí)腳本
定位Console/Kernel.php,commands與schedule如下添加
protected $commands = [
\App\Console\Commands\BackupDatabase::class
];
protected function schedule(Schedule $schedule)
{
$schedule->command('db:backup')->twiceDaily(12, 24); //每天12點(diǎn)和24點(diǎn)執(zhí)行任務(wù)
}
使用Cron定時(shí)調(diào)度
命令行
[root@localhost /] crontab -e
添加如下代碼
* * * * * /usr/bin/php /www-data/xxxx/artisan schedule:run 1>> /dev/null 2>&1
查看已有的任務(wù)調(diào)度
[root@localhost /] crontab -u root -l
over