php备份指定的多个数据库并压缩然后发送邮件

直接上代码:
<?php $loader = require 'vendor/autoload.php'; // 设置数据库连接信息
$host = "xxx.xxx.92.240";
$user = "xxx";
$password = "1xxx%";
$database = "xxx askme yyy xxx xx-xxx"; // 多个数据库之间使用空格连接 // 设置备份文件存放目录
$backup_dir = "/tmp/backup/"; // 设置备份文件名格式(如:20211103_backup.sql)
$backup_filename = date("Ymd") . "_backup.sql"; // // 执行备份
$command = "/usr/local/mysql/bin/mysqldump --routines --user={$user} --password={$password} --host={$host} --databases {$database} > {$backup_dir}{$backup_filename}";
system($command);
// 压缩备份文件为zip格式
$zip = new ZipArchive();
$zip_filename = $backup_dir . date("Ymd") . '_'.str_replace(' ', '_', $database) . "_backup.zip";
if ($zip->open($zip_filename, ZipArchive::CREATE) !== TRUE) {
die("Could not open archive");
}
$zip->addFile($backup_dir . $backup_filename, $backup_filename);
$zip->close();
// 发送备份文件至指定邮箱
$to = "xxx@qq.com";
$subject = "MySQL Backup " . date("Y/m/d");
$body = "MySQL Backup " . date("Y/m/d");
$file = $zip_filename;
$filename = basename($file);
// 初始化phpmailer对象
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.163.com'; // 设置SMTP服务器
$mail->SMTPAuth = true; // 启用SMTP验证
$mail->Username = 'xxx@163.com'; // SMTP 用户名
$mail->Password = 'xxx'; // SMTP 密码
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->From = 'xxxx@163.com';
$mail->FromName = 'MySQL Backup';
$mail->addAddress($to);
$mail->addAttachment($zip_filename, $filename); // 添加邮件附件
$mail->isHTML(false);
$mail->Subject = $subject;
$mail->Body = $body;
// 发送邮件
if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message sent!';
}
// 删除旧的备份文件和压缩文件
$old_backup = $backup_dir . date("Ymd", strtotime("-1 day")) . "_backup.sql";
if (file_exists($old_backup)) {
unlink($old_backup);
}
if (file_exists($zip_filename)) {
unlink($zip_filename);
}