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/');

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小师评

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

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

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

打赏作者

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

抵扣说明:

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

余额充值