我的网站右栏中有一个名为"每周最高用户"的框。因此,一周内,该框的内容不会改变。所以我可以用两种方式存储这些数据:
现在我想知道哪一个更好,成本更低?我的意思是执行select
查询更为理想,或者使用file_get_contents()
和explode()
在服务器上打开文本文件吗?
答案 0 :(得分:1)
这取决于很多不同的因素,仅举几例
我总是尝试将这些数据存储在数据库中并为其添加时间戳,以便能够显示过去的数据或从中创建统计数据;这样我也可以简单地存储用户ID而无需从数据库中单独加载数据(例如SELECT user.name FROM user, user_of_week WHERE user.id = user_of_week.user AND user_of_week.weekid = 120 ORDER BY user_of_week.position ASC;
)
您可以尝试自己测试特定情况 - 编写测试脚本并在测量时间时加载100次:
header('Content-Type: text/plain;charset=utf-8');
// Connect to database here
$TestAmount = 100;
$OverallTime = 0;
for($i = 0; $i < $TestAmount; $i++) {
// Read current time
$start = microtime(true);
// Load data from database here
// Get the amount of time it took
$time = microtime(true) - $start;
echo $i .': took '. $time ."\n";
$OverallTime += $time;
}
echo 'Overall time: '. $OverallTime ."\n";
echo 'Average: '. ($OverallTime / $TestAmount);
// Close connection to database here
这将输出与此类似的内容:
0: took 4
1: took 5
Overall time: 450
Average: 4.5
对文件重复相同并进行比较。
在文件中存储数据时,您还可以使用类似JSON的东西 - 这样更容易解析。