如何使用PHP备份数据库并定时发送到指定邮箱 | 陈思敏捷

首页 » MySQL » 正文

如何使用PHP备份数据库并定时发送到指定邮箱

背景:对于个人站长而言,在玩票或者初期建站阶段我们通常会使用免费的或者成本较低的虚拟空间,那么对于这些比较入门级的服务商而言异地备份往往做的不好,如果发生数据丢失就是灾难性的,博主从2011年接触建站就有过多次切肤之痛。那么这时候我们就需要考虑如何自己来备份数据,由于个人建站对于web程序基本是没有改动的(往往使用知名的开源程序),其实对于我们而言最为重要的就是数据库的备份了。这里以PHP为例。

准备:所谓做事做全套,这里博主给大家提供全部需要的组件或者资源列表

1.一个虚拟空间,如果已有请看下一条,因为练习需要推荐大家使用卓越主机idc.ac 订购一个免费空间(博主最近发现的一家免空服务商,友情提醒仅推荐测试用途,切勿建立重要站点)

2.一个126或者163账号(主流我们使用的就是QQ和163系的邮箱,但是博主多次测试发现QQ的验证更加恶心现在对于SMTP还增加了额外的授权码机制,对于我们即将使用的PHPMailer组件尤其不友好)

3.PHPMailer组件 https://github.com/PHPMailer/PHPMailer

开始:组件准备好就是编码了。

这里除了最开始几行大家需要改成自己的数据库,邮箱信息外,还有2行需要特别给大家说下

部署:编码结束后我们需要把代码保存为PHP文件(例mail.php)然后上传到虚拟空间上。假设我们的域名是mail.com, 那么这时候我们浏览器访问http://mail.com/mail.php即可完成一次数据库的备份发送到邮箱的操作。

定时:上面基本就比较完整了,但是我们发现美中不足,人都是懒的,我们希望能不能定时的触发呢。答案是肯定的。这里推荐几种方案,具体实现就不赘述了。

1.如果你使用Windows 可以设置一个bat文件定时触发访问http://mail.com/mail.php

2.设置你的工作机或者常用计算机主页为http://mail.com/mail.php,但是这种方案需要改造一下代码增加一个每天只发一次的判断标记,不难你邮箱估计很快就被封了。

3.如果你使用的是Linux或者Mac 设置一个crontab 访问http://mail.com/mail.php

4.据我所知阿里云的ace ,新浪的sae都提供了基于自己主机的定时任务机制,配置也很简单。可以搜索参考。

疑问:因为写这篇文章是针对基本没有编码基础的个人站长,如果有一定基础的同学可能会困惑上面的定时是不是考虑使用纯PHP来实现,那么博主经过测试发现在除非是纯CLI状态(基于本文讨论的是虚拟空间,所以我们是没有CLI执行权限的),只要结合了WEB服务器(Nginx ,Apache等)基本是不可行的,即使你使用以下代码其实也是不能真正的忽略PHP的异常和超时。

再引用一段官方的解释,相信大家是明白了。

Your web server can have other timeout configurations that may also interrupt PHP execution. Apache has a Timeout directive and IIS has a CGI timeout function. Both default to 300 seconds. See your web server documentation for specific details.

翻译:

你的 web 服务器也可以有其他超时设置,也有可能中断 PHP 的执行。 Apache 有一个 Timeout 指令,IIS 有一个 CGI 超时功能。 他们默认都是 300 秒。更多具体信息参见你的 web 服务器的文档。

最后:对于网站而言数据就是生命,不管怎么样做好数据备份机制还是非常重要的。重要数据务必勤备份。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据