美文网首页LaravelLaravel
Laravel定时任务备份数据库

Laravel定时任务备份数据库

作者: 沐青之枫 | 来源:发表于2018-08-29 10:04 被阅读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

    相关文章

      网友评论

        本文标题:Laravel定时任务备份数据库

        本文链接:https://www.haomeiwen.com/subject/rtkhwftx.html