完美的站点数据备份方案需要解决以下两个问题:
- 如何实现定时备份?
- 如何发送带附件的邮件?
下面一一说明相关函数和技术实现
一、自动备份数据库和文件(PHP)
<?php ignore_user_abort(true);// 该函数ignore_user_abort参数为true时候,表示当浏览器端关闭窗口后,脚本依然保持执行状态(默认会停止执行)。 set_time_limit(0); // 设置php脚本执行最长时间,0表永不停止(除非服务器停止) ,php.ini中同样可设置改项 $interval=10; //设置该脚本每间隔为10秒钟执行一次 $i=1; do{ mkdir($i); //执行你要求循环的操作,此处为创建1、2、3……命名的文件夹 $i++;sleep($interval); // 等10秒钟 }while(true); ?> |
执行以上脚本,然后关闭窗口,发现php脚本目录中出现1、2、3……这种文件,而且不停止,除非重启apache服务器。
因此利用以上函数ignore_user_abort,将时间间隔设置为3600*24即为每天备份一次数据,备份数据使用dump命令即可,或者借用一些目前网上现成的php备份数据的类即可。
二、发送带附件的邮件(PHP)
有两种方式,一种是smtp,一种是普通mail方式。
两方式区别大概形容是这样的:使用stmp方式,可以在任何没有邮件服务的地方,比如你自己电脑上建一个php平台,然后php脚本里需要填写你的一个邮箱和密码(比如163邮箱),比如发给qq邮箱用户,该用户就会显示是从你的163邮箱发送出来的邮件,因为smtp必须要账号密码,所以发出去的邮件跟你直接在163邮箱里发出的没有区别,在qq收件用户看是没有区别的。这个发邮件过程你需要联网,相当于php代理你登陆你的163邮箱发给你朋友邮件,同时你的163邮箱需要开启stmp服务的支持,stmp服务本省也大概这样的意思;而普通mail方式,就是以你的主机来说,需要你的主机有邮箱服务器才可以,这种形式正常情况无法在用户电脑发送邮件,需要你购买的主机商提供邮局服务,发出去显示的地址也就是你主机商提供的邮箱地址,例如51php给用户提供一个邮箱地址是@hkip923.u9bbs.com 这种,因为是免费,所以不太好看,以下就这两种方式的代码做说明。
wordpress核心代码中中有发邮件的类,这里可以借用,因此包含wp-includes/class-phpmailer.php和wp-includes/class-smtp.php这个两个文件即可。
1、STMP方式
<?php
$mail=new PHPMailer();
// 添加收件人地址,可以多次使用来添加多个收件人
// 设置邮件头的From字段。
$mail->Subject = "PHPMailer测试邮件"; //邮件标题
// 设置SMTP服务器。这里使用网易的SMTP服务器,详细查阅http://mail.163.com/mailhelp/client.htm
// 设置用户名和密码,即网易邮件的用户名和密码。
$mail->AddReplyTo("", "");
if(!$mail->Send()) |
2、Mail方式
mail方式需要较简单,但需要你买的虚拟主机支持
<?php $phpmailer = new PHPMailer();
// 获取主机的邮箱地址
// Empty out the values that may be set var_dump($result);} ?> |
windows的cmd命令行,整理成可执…