数据库挂了?我想WordPress依然能继续服务
19 四 2009
上网多年,是否看到过数据库错误,导致网站无法访问的情况?我在想在没有数据库哥们的支持的情况下,如何让您的Apache兄弟继续为来访用户服务?(包含但不仅限于Wordpress)
本来是更新一下db-error.php的,却想到了更好的解决方案,就来分享一下如何对应这种情况:
当WordPress连接数据失败的情况下,会调用wp-content/db-error.php这个文件来作为页面提示。也就是说数据库挂掉界面可以在这里定义。我之前的方案是报错后5秒后自动转向到我的feed烧录地址feed.cbmland.com,因为我觉得这里或许能有用户需要的内容,也不至于网站打不开而尴尬至极。
而当数据挂掉的时候,能否尽量还原之前的页面信息呢?答案很简单,前提是有对应的快照(cache)存在,那么就是需要有套机制能创建快照,以供不 时之需,而已知ob_get_flush()函数是可以将当前PHP输出内容全部拿到的,那么快照内容生成就不成问题了。剩下的就是通过IO来写入快照文 件了。供需要时读取还原之前页面。
哈~理论貌似没问题了,进一步分析细节:
多久更新一次快照(cache)?我想不能太频繁,先定一周( 7 days)时间吧。
依据什么来控制是否更新快照?用当前时间和快照文件修改时间(filemtime)+7Days来比较就好。
快照文件名如何存放以及目录结构?我的页面是启用rewrite的,结构也还明晰,文件名和存放路径就按已当前的网页访问路径URI格式化吧。
如何读取快照?这里肯定不能使用到数据库的,也就是说需要优先WP程序入口来调用。还原文件访问路径,用file_get_contents获取内容就好了。
如果不存在快照如何处理?那就转404的快照页面了,对了,有些页面需要特殊化命名,is_404()、is_home()这些快照文件是应该是需要特殊化命名的。
哈哈,差点忘了,还有主人态下不能生成快照,否则管理员的连接都被看到了。
貌似没有什么太大的问题了。Try it~
7 Responses for "数据库挂了?我想WordPress依然能继续服务"
-
为啥不全部静态化,有改动的时候再更新静态文件呢。
我用缓存插件的。只能牺牲一些插件的功能了啊
您老现在不是已经用上了cos-html-cache了么…
一般来说数据库挂了这种羞人的事情用了这个就能90%掩埋了…除非人家点了你的tag啊,分页什么的这个方法很是不错!
可惜,本人对于这方面知之太少!
无法灵活应用!
老大,什么时候能来篇详细点的教程??方便一下我们这些小白!!Leave a Reply
2009-04-20 09:04