MySql或Json的多请求?

时间:2014-07-28 04:21:39

标签: php mysql json

我的服务器中有1000个json文件,用户使用mysite.com/request.php?file=id这样的内容请求他们的文件,我应该显示id.json。但在我显示之前我应该​​检查id.json需要更新或不更新。

我的json文件是这样的:

{
  "response": {
        ......,
  "lastupdate":14323342

 }
}

在上次更新中,我以秒为单位存储上次更新时间,如果当前时间大于1小时,我应该从其他地方更新我的文件。 现在我的问题:在Mysql或每个json文件中保存lastupdate是否合适? 如果我使用mysql,我需要1000行,每行应该有2列,第一列是id,第二列是lastupdate。我的用户超过10,000,每天服务器硬件对于我

1 个答案:

答案 0 :(得分:1)

如果您正在抓取特定文件(不打开" flatfile数据库"并搜索某些内容),它应该比查询mySQL数据库更快。


一个类似案例的思想;如果在不到一个小时内可以多次请求相同的ID,并且如果您实际上不需要更新" json文件中的最后更新时间"直到用户提出要求,然后在向request.php?file=id提出请求时我会:

"try" to get and decode the json file, put the decoded to (eg) $data

if the file doesn't exist OR lastupdate is more than an hour
{

    update the lastupdate, and update $data

    update the json file

}

show $data

...它基本上是一个简单的缓存,试图从文件而不是数据库中获取数据,并在没有人询问时阻止更新(数据库查询)。

您可以安全地rm -rf"缓存文件夹中的所有内容"任何时候。

if ( $data = file_get_contents( 'path_to_cache/' . $id . '.json' ) )
    $data = json_decode( $data );

if ( empty( $data ) || $data->lastupdate < time() - 3600 )
{
    // do query, put to $data
    // encode $data, put to 'path_to_cache/' . $id . '.json'
}

echo $data;

...实际上,在我的情况下,我不需要将lastupdate放到DB上。所以我可以简单地使用json文件&#39的filemtime()。