PHP

分享PHP实现定时自动备份数据库发送到邮箱脚本

字号+ 编辑: 国内TP粉 修订: 种花家 来源: ThinkPHP 2023-09-10 我要说两句(0)

分享PHP实现定时自动备份数据库发送到邮箱脚本。

配置文件

<?php 
/**
 * 任务进程中的配置文件
 * time 单位秒
 * @var array  */
return [
    //任务 id
    "TASK"=>[
        "clearmeesage"=>[
            "time"=>60,
            "number"=>0,
            "name"=>"clearmeesage"
        ],//清除短信中不要的垃圾数据
        "clearroom"=>[
            "time"=>3600,
            "number"=>1,
            "name"=>"clearroom"
        ],//清除房间中不要的垃圾数据
        "backup"=>[
            "time"=>86400,//多久备份一次
            "number"=>2,
            "name"=>"backup",
            "target_dir"=>"/home/bak/",//备份的路径
            "dbArray"=>[//要备份的数据库
                "tourism_game",
            ],
            "past_time"=>9//过期时间/天
        ],//数据库定时备份
    ],
    "EXECUTE"=>["clearroom","backup","clearmeesage"],//需要启动的任务 "backup",
    //数据库信息
    "DB"=>array(
        'DB_TYPE' => 'mysql',
        'DB_HOST' => 'localhost',
        'DB_NAME' => '',//数据库名称
        'DB_USER' => '',//数据库账号
        'DB_PWD' => '',//密码
        'DB_PORT' => '3306',
        'DB_CODE'=>'utf8'
    ),
    //邮件发送配置
    "EMAIL"=>[
        'SMTP_HOST'   => 'smtp.qq.com', //SMTP服务器
        'SMTP_PORT'   => '587', //SMTP服务器端口
        'SMTP_USER'   => '8044023@qq.com', //SMTP服务器用户名
        'SMTP_PASS'   => '', //SMTP服务器密码
        'FROM_EMAIL'  => '8044023@qq.com', //发件人EMAIL
        'FROM_NAME'   => '测试附件服务器端', //发件人名称
        'REPLY_EMAIL' => '', //回复EMAIL(留空则为发件人EMAIL)
        'REPLY_NAME'  => '', //回复名称(留空则为发件人名称)
        "GET_EMAIL"   => 'cqkxm@qq.com',//接收邮箱地址
    ],
];
?>


业务代码

<?php
/**
 * 备份数据库
 * @author 码农<8044023@qq.com>
 *  */
namespace Crontab;
import("PHPMailer.PHPMailerAutoload");//邮件发送插件
class init{
    public static function _init(){
        $date = date("Ymd");
        $sql_arr=array();
        foreach(C("TASK.backup")['dbArray'] as $db_name){
            $sql_name=C("TASK.backup")['target_dir'].$db_name."_".$date.".sql";
            $command ="mysqldump -u ".C("DB.DB_USER")." -p".replace_keyword(C("DB.DB_PWD"))." ".$db_name." >".$sql_name;
            shell_exec($command);
            $sql_arr[]=$sql_name;
        }
        //邮件发送C("EMAIL.GET_EMAIL")
        timePHP_send_mail(C("EMAIL.GET_EMAIL"),'测试备份-'.date("Y-m-d H:i:s"),'备份测试环境-'.date("Y-m-d H:i:s",time()),'<p>感谢你使用timePHP框架!</p>',$sql_arr);
        //删除 过期的数据库备份数据
        $past_time=C("TASK.backup")['target_dir'];
        for($i=$past_time;$i>=1;$i--){
            foreach(C("TASK.backup")['db_array'] as $db_name){
                $command="rm -rf ".C("TASK.backup")['target_dir'].$db_name."_".date("Ymd",time()-(($i+$past_time)*86400)).".sql";
                shell_exec($command);//是否删除 过期的数据库
            }
        }
    }
}


阅完此文,您的感想如何?
  • 有用

    0

  • 没用

    0

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.交流群: PHP+JS聊天群

相关课文
  • mac开发接入微信公众号接口返回报错 cURL error 56: SSLRead() return error -9806

  • pecl安装程序时报错Array and string offset access syntax with curly braces is no longer supported

  • PHP的换行符是什么

  • 由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决

我要说说
网上宾友点评