我想为我的应用程序创建PHP缓存系统。由于我的托管服务提供商不支持APC或memcached,我不得不建立自己的。
有许多PHP缓存类似乎是为小流量的网站设计的。当有人请求当前正在更新的文件时,它们大多会崩溃。
我会告诉你我处理这个问题的想法:
假设我们的网站是一个博客(每天3-4次更新),并且由两个主要文件组成:
pageX.php - 包含文章链接和说明的页面
articleID.php - 包含请求文章的页面
通常情况下,所有的事情都可以通过MySQL查询来处理,但我们希望节省一些服务器资源。
情况1:用户请求file.php(文章或页面)
file.php
//some code
$time = time();
//get second digit of minutes
$minutes = substr(date('i', $time), 1);
//get $result ∈ [0,599]
$result = $minutes*60 + (int)(date('s'));
//load cached version of data depending on time
if($result >= 0 && $result <= 199) {
require_once '/cache1/data.php';
}
else if($result >= 200 && $result <= 399) {
require_once '/cache2/data.php';
}
else if($result >= 400 && $result <= 599) {
require_once '/cache3/data.php';
}
//some code
?>文件/cacheX/data.php包含相同的缓存数据。
情况2:一些文章被添加/删除,管理员运行update.php
update.php:
1)从数据库中获取所有文章
2)对于所有新文章(自上次更新以来)创建文件articleID.php(使用我们想要缓存的数据)并将其保存到/ cache0 /文件夹(如果有必要则覆盖)
3)为每个页面(有细胞(计数($ articles)/ 5)页)创建文件pageX.php(与我们想要缓存的数据)并将其保存到/ cache0 /文件夹(如果必要则覆盖)
4)创建变量$ result(就像在file.php中一样)
5)http://bayimg.com/CAMffAADl
6)结束
现在我的问题:
A.您对这个解决方案有什么看法?你看到任何错误?你会添加/更改/删除什么?
B.真的有很多文章会发生什么(比如10000)?它仍然有效吗?
C.我选择了合适的时间吗?在这种情况下200秒是最好的? (假设缓存文件有5-10kB)
D.什么更好 - 我的解决方案或MySQL缓存?