php 备份数据库方法(可指定按时间段为周期保留多少份)

php 备份数据库方法(可指定按时间段为周期保留多少份)

php 备份数据库方法(可指定只保留几天内的文件)

有了这个方法,再要实现每天定时实现数据库的备份工作就很好做了。

最简单的就是直接写一个crontab计划任务,当然怎么实现看自己吧,方法很多。

原始方法代码:

/**
 * 备份数据库
 * @access public
 */
public function backupMysql()
{
    $database = config("database.database");
    $username = config("database.username");
    $password  = config("database.password");
    $day = date('d');
    if($day < 8){
        $key = '___[1-7号备份]';
    }elseif($day < 15){
        $key = '___[8-14号备份]';
    }elseif($day < 22){
        $key = '___[15-21号备份]';
    }else{
        $key = '___[22-31号备份]';
    }
    $fileName = $database. $key . '.sql';
    $saveDir = ROOT_PATH . '/backup/db/';
    if(!file_exists($saveDir)) @mkdir($saveDir, 0755 ,true);
    $filepath = $saveDir . $fileName;
    exec("/usr/local/mysql/bin/mysqldump -u$username -p$password $database > $filepath");
}

优化方法代码:

当中用了一些自己写的类,知道意思就行,这里只是提供一个思路

/**
 * 备份数据库
 * @access private
 */
private function backupMysql()
{
    set_time_limit(0);
    try {
        $database = config("database.database");
        $username = config("database.username");
        $password  = config("database.password");
        $day = date('d');
        if($day < 8){
            $key = '___[1-7号备份]';
        }elseif($day < 15){
            $key = '___[8-14号备份]';
        }elseif($day < 22){
            $key = '___[15-21号备份]';
        }else{
            $key = '___[22-31号备份]';
        }
        $fileName = $database. $key . '.sql';
        $saveDir = ROOT_PATH . '/backup/db/';
        if(!file_exists($saveDir)) @mkdir($saveDir, 0755 ,true);
        $filepath = $saveDir . $fileName;
        exec("/usr/local/mysql/bin/mysqldump -u$username -p$password $database > $filepath");
 
        #  记录日志
        $message  = '[记录时间]: '. date('Y-m-d H:i:s') . PHP_EOL;
        $message .= '[执行结果]: '. '完成任务' . PHP_EOL;
        c_log::add(date('Y-m-d')."__[系统任务]__备份数据库.txt", $message, 'task/');
    } catch (\think\Exception $e) {
        #  记录异常错误
        $message  = '[异常时间]: '. date('Y-m-d H:i:s') . PHP_EOL;
        $message .= '[异常消息]: '. $e->getMessage() . PHP_EOL;
        $message .= '[异常文件]: '. $e->getFile() . PHP_EOL;
        $message .= '[异常行数]: '. $e->getLine() . PHP_EOL;
        c_log::add(date('Y-m-d')."__[系统任务]__备份数据库.txt", $message, 'error/');
    }
}
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享