php 备份数据库方法(可指定只保留几天内的文件)
有了这个方法,再要实现每天定时实现数据库的备份工作就很好做了。
最简单的就是直接写一个crontab计划任务,当然怎么实现看自己吧,方法很多。
原始方法代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | /** * 备份数据库 * @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" ); } |
优化方法代码:
当中用了一些自己写的类,知道意思就行,这里只是提供一个思路
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | /** * 备份数据库 * @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/' ); } } |
转载请注明来源地址:小川编程 » https://www.youhutong.com/index.php/article/index/223.html
1、本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,下载后请24小时内删除。
2、本站所有内容均不能保证其完整性,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意