由于 Artalk
是自托管的评论系统,服务器难免会遇上宕机,意外销毁等。这时如果没有备份评论数据,我们可能面临自我检讨的过程了
介绍
主要是利用开源项目 @PHPMailer 发送备份的数据文件至邮箱
实现以下功能:
- 带有漂亮的邮件模板
- 发送邮件后自动删除备份文件
- 写出备份日志到当前目录
其实我也是东凑西凑,把需要的功能合并在一起。没办法,我只是个业余的 ~
下载依赖项目
前往 Releases 页面下载最新项目
上传压缩包到你的php空间并解压它,目录随意,你能记住就行了
创建备份文件
在你php空间任意目录内新建 Artalk_backup.php
空白文件
将下面代码粘贴进去,并根据自己实际情况填写
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| <?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception;
require './vendor/phpmailer/phpmailer/src/Exception.php'; require './vendor/phpmailer/phpmailer/src/PHPMailer.php'; require './vendor/phpmailer/phpmailer/src/SMTP.php';
$mail = new PHPMailer(true); try { $mail->CharSet ="UTF-8"; $mail->SMTPDebug = 0; $mail->isSMTP(); $mail->Host = 'smtp.163.com'; $mail->SMTPAuth = true; $mail->Username = 'xxxx@163.com'; $mail->Password = 'xxxx'; $mail->SMTPSecure = 'ssl'; $mail->Port = 465; $mail->setFrom('xxxx@163.com', 'Artalk评论备份'); $mail->addAddress('1037886804@qq.com', '笨蛋海绵'); $path = "./data/comments.data.json"; $path2 = "./data/comments.config.json"; $filename = 'Artalk_data(' . time() . ').zip'; $zip = new ZipArchive(); $zip->open($filename,ZipArchive::CREATE); $zip->addFile($path,basename($path)); $zip->addFile($path2,basename($path2)); $zip->close(); $mail->addAttachment($filename, 'Artalk_data.zip');
date_default_timezone_set('Asia/Shanghai'); $time = date('Y-m-d H:i:s'); $mail->isHTML(true); $mail->Subject = '👉 叮咚,您博客评论数据备份成功啦'; $Html = ' <div style="background-color:white;border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;width:500px;margin:50px auto;color:#555555;font-size:12px;"> <h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;"> <span style="color: #12ADDB;font-weight:bold;"> 您的博客Artalk评论数据已备份: </span> </h2> <div style="padding:0 12px 0 12px; margin-top:18px;"> <div style="background-color: #f5f5f5;padding: 10px 15px;margin:18px 0;word-wrap:break-word;"> <p>备份时间:' . $time . '</p> </div> <p><a style="text-decoration:none; color:#12addb" href="https://artalk.ml/Artalk备份日志.txt" target="_blank" rel="noopener">查看最后备份时间</a></p> </div> </div>'; $mail->Body = $Html; $mail->AltBody = '备份日期' . $time;
$mail->send(); echo "<script>alert('邮件发送成功啦')</script>"; unlink($filename); $myfile = fopen("Artalk备份日志.txt", "w") or die("Unable to open file!"); fwrite($myfile, '上一次备份于: ' . $time); fclose($myfile); } catch (Exception $e) { unlink($filename); echo "<script>alert('邮件发送失败')</script>"; echo $mail->ErrorInfo; }
|
只需要配置 6~8
和 15~22
行就可以了
主要是 SMTP 用户名
SMTP 密码
一定要填写对
开始备份数据
访问 https://域名/Artalk_backup.php
就能自动备份 Artalk
的评论数据并发送到你的邮箱了
此时,你会想我会傻到每天自己定时访问进行备份吗?
跟着我走往下看 ~
创建定时任务
1.注册cron-job帐号
注册地址:https://cron-job.org/en/signup/
注册时的Time zone
时区选择Asia/Shanghai

2.添加一个计划任务
登陆之后依次点击 Members -> Cronjobs -> Create cronjob

Title, Address
Title
任务名称, 可以随便填写一个
Address
任务地址,填写 https://域名/Artalk_backup.php
Schedule
选择 User-defined 进行自定义设置,按住Ctrl可多选
没什么要求,你需要什么时候备份一次,就选择哪个
Days of month:
每月的第几天
Days of week:
每月的星期几
Months:
月份
Hours:
小时
Minutes:
分钟
Notifications
邮件通知选项,可以不用修改,也可以根据自己的需要修改
Common
勾选Save responses
, 保存唤醒日志, 在 Members
有日志
最后点击Create cronjob,创建任务就行了
完成
尽情享受人生的每一刻 ~