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/'); } }
转载请注明来源地址:小川编程 » https://www.youhutong.com/index.php/article/index/224.html
1、本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,下载后请24小时内删除。
2、本站所有内容均不能保证其完整性,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意