托管在共享服务器上的应用程序的真正PHP缓存

时间:2012-02-17 11:09:19

标签: php caching

我想为我的应用程序创建PHP缓存系统。由于我的托管服务提供商不支持APC或memcached,我被迫建立自己的。

有许多PHP缓存类似乎是为流量较小的网站设计的。当有人请求当前正在更新的文件时,大多数人都会崩溃。

我会告诉你我处理这个问题的想法:

假设我们的网站是博客(每天更新3-4次),并包含两个主要文件:

  • pageX.php - 包含文章链接和说明的页面

  • articleID.php - 包含所需文章的页面

通常,一切都将由MySQL查询处理,但我们想要节省一些服务器资源。

情况1:用户请求file.php(文章或页面)

file.php

<?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)对于每个页面(有ceil(count($ articles)/ 5)页面)创建文件pageX.php(包含我们要缓存的数据)并将其保存到/ cache0 /文件夹(如果需要则覆盖)< / p>

4)创建变量$ result(就像在file.php中一样)

5)http://bayimg.com/CAMffAADl

6)结束

现在我的问题:

一个。您对此解决方案有何看法?你看到任何错误吗?你会添加/更改/删除什么?

B中。在真正有很多文章的地方会发生什么(让我们说10000)?它仍然有效吗?

℃。我选择了合适的时间吗?在这种情况下,200秒是最好的吗? (假设缓存文件有5-10kB)

d。什么是更好的 - 我的解决方案或MySQL缓存?

0 个答案:

没有答案