php 备份站点源码(可指定按时间段为周期保留多少份)

php 备份站点源码(可指定按时间段为周期保留多少份)

有了这个方法,再要实现定时备份工作就很好做了。

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

原始方法代码:

/**
 * 备份站点
 * @access public
 */
public function backupSite()
{
    set_time_limit(0);
    $database = config("database.database");
    $key = date('d')<16 ? '___[1-15号备份]' : '___[16-31号备份]';
    $fileName = $database. $key . '.zip';
    $saveDir = ROOT_PATH . '/backup/site/';
    if(!file_exists($saveDir)) @mkdir($saveDir, 0755 ,true);
    $filepath = $saveDir . $fileName;
    $rootpath = ROOT_PATH;
    exec("zip -r $filepath $rootpath/*");
}

优化后代码:

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

/**
 * 备份站点
 * @access private
 */
private function backupSite()
{
    set_time_limit(0);
    try {
        $database = config("database.database");
        $key = date('d')<16 ? '___[1-15号备份]' : '___[16-31号备份]';
        $fileName = $database. $key . '.zip';
        $saveDir = ROOT_PATH . '/backup/site/';
        if(!file_exists($saveDir)) @mkdir($saveDir, 0755 ,true);
        $filepath = $saveDir . $fileName;
        $rootpath = ROOT_PATH;
        exec("zip -r $filepath $rootpath/*");
 
        #  记录日志
        $message  = '[记录时间]: '. date('Y-m-d H:i:s') . PHP_EOL;
        $message .= '[执行结果]: '. '完成任务' . PHP_EOL;
        c_log::add(date('Y-m-d')."__[系统任务]__备份站点.txt", $message, 'task/');
         
        #  上传文件到OSS -----------------------可删除---------------
        try{
            $message  = '[开始上传]: '. date('Y-m-d H:i:s') . PHP_EOL;
            $fileString = (string)@file_get_contents($filepath);
            $object = 'backupSite/'.$fileName;
            $res = c_oss::model()->uploadString($object, $fileString);
            $message .= '[结束上传]: '. date('Y-m-d H:i:s') . PHP_EOL;
            $message .= '[返回数据]: '. json_encode($res, JSON_UNESCAPED_UNICODE) . PHP_EOL;
            c_log::add(date('Y-m-d')."__[系统任务]__备份站点.txt", $message, 'task/');
        }catch (\think\Exception $e){}
        #  ----------------------------------------------------------
    } 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/');
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小师评

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值