LaravelLaravel

Laravel定时任务备份数据库

2018-08-29  本文已影响109人  沐青之枫

结合Laravel特性,通过使用 artisan 命令进行封装,在定时任务中,做到非常方便的数据库备份

备份命令

php artisan make:comman命令来创建一个自定义命令

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') //生成到项目文件夹外
        ));
    }

    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.');
        }
    }
}

定时脚本

定位Console/Kernel.php,commandsschedule如下添加

    protected $commands = [
        \App\Console\Commands\BackupDatabase::class
    ];

  
    protected function schedule(Schedule $schedule)
    {
        $schedule->command('db:backup')->twiceDaily(12, 24); //每天12点和24点执行任务
    }

使用Cron定时调度

命令行

[root@localhost /]   crontab -e

添加如下代码

* * * * * /usr/bin/php /www-data/xxxx/artisan schedule:run 1>> /dev/null 2>&1

查看已有的任务调度

[root@localhost /]  crontab -u root -l

over

上一篇下一篇

猜你喜欢

热点阅读