我有一个脚本,由于服务器忙,有时需要很长时间才能加载。 该脚本只是一个网页,每隔几分钟显示一次来自数据库表的特定信息。 我想在大多数时间显示最新信息,但是当服务器繁忙时,我不希望此脚本成为服务器的负担,但我仍然希望它显示最新数据。有。
因此,我想做一个简单的检查,就像这样:
$load_on_server = sys_getloadavg()[0];
If(load_on_server > $load_limit) {
display_cached_version();
} else {
display_regular_version();
}
但是我不确定如何显示缓存的版本。 有什么想法吗?
答案 0 :(得分:1)
将页面存储在另一个文件中,并根据每个请求对其进行更新。在PHP代码中,检查负载,如果负载大于CPU内核的数量,则file_get_contents会存储页面,如果不是,则正常执行程序。
在每次从数据库成功获取文件时使用file_put_contents(“ cache.html”),并在每个负载过高的请求上使用file_get_contents(“ cache.html”)。
答案 1 :(得分:0)
这是本地PHP解决方案,用于缓存查询结果。
让我们假设返回的数据几乎相同,将其缓存在文件中可能是提高响应时间性能的好方法。因此您可以通过以下示例进行处理:
<?php
if (filemtime('myCacheFile.txt') < time()-1*3600) {
// declare database connection details ==> code
// create connection to database ==> code
// error handling if connection to database failed ==> code
// make the SQL call
if ($result = $db->query("SELECT * FROM myTable")) {
$rows = array();
while($row = $result->fetch_array(MYSQL_ASSOC)) {
$rows[] = $row;
}
// store query result in myCacheFile.txt
file_put_contents('myCacheFile.txt', serialize(json_encode($rows)));
echo json_encode($rows);
}
else {
echo 'data could not be extracted from the db.';
}
}
else {
$data = unserialize(file_get_contents('myCacheFile.txt'));
return $data;
}
刷新数据的生命周期是一个小时,所以我认为 数据可以每小时更改一次,这是刷新缓存中数据的一种方式 也。
希望这对您有所帮助。