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/');
}
}
© 版权声明
本站所发布的全部内容源于互联网搬运,请在下载后24小时内删除。如果有侵权之处请第一时间联系我们E-mail:zgq3242@qq.com删除。敬请谅解!
THE END