我的服务器中有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,每天服务器硬件对于我
答案 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()。