我有一个连接到专用数据库的风捕捉器。
捕获者的数据每分钟推送到db。
我可以使用连接到第二个db并将数据打印到wp页面
$meteodb = new wpdb(\'xx\',\'xx\',\'xx\',\'xx\');
$meteoValues = $meteodb->get_results(
"
SELECT average, min, max, direction, timestamp
FROM wind
ORDER BY timestamp
"
);
我对短暂的概念完全陌生。我尽量减少使用db请求的效率
与每次用户查看页面时直接连接到第二个数据库不同,我认为最好创建一个临时数据库,即每5分钟使用cron将新的数据集从第二个数据库直接拉到wp数据库。我只保留当天(早上6点到晚上8点)的数据,并在24小时后自动擦除
你认为这是一个明智的想法吗?
是否更明智的做法是每5分钟记录一次新的瞬态,仅记录新数据,然后调用所有可用的瞬态(少于24小时)
2°单个瞬态每5分钟刷新一次,阵列包含过去24小时的所有数据?
有效期仅为5分钟(甚至2分钟),使用transient听起来明智吗?
提前谢谢你
德菲
SO网友:Krzysiek Dróżdż
瞬态是一种将缓存数据临时存储在数据库中的简单方法,它为缓存数据提供一个自定义名称和一个时间段,在该时间段之后,缓存数据将过期并被删除。所以,是的,从第二个DB中获取数据并将其存储为瞬态将是一个好主意。
你首先要记住的是:
每个人似乎都误解了瞬时过期的工作原理,所以它的长短是:瞬时过期时间是最长的时间。没有最低年龄。瞬态可能会在设置后的一秒钟或24小时内消失,但它们在过期后将永远不会出现。
当然,很难用你的名字来选择过去24小时内的所有瞬态-瞬态名称的后缀是随机值(或者可能是哈希-在这种情况下并不重要)。
鉴于这两个事实,恐怕你的两种方法都行不通。
用cron设置瞬态没有任何意义-它们可能会在那之后立即消失。而且您不能存储过去24小时的值并从DB中选择所有值。
那么在这种情况下,我将如何使用瞬态呢
假设有一个函数可以从第二个DB中获取所有数据作为一个数组。我们调用这个函数
get_remote_db_data()
. 我的代码如下所示:
$data = get_transient(\'my_transient_name\');
if ( ! $data ) {
$data = get_remote_db_data();
set_transient(\'my_transient_name\', $data, 5*60);
}
// ... do your stuff with $data
到期时间应该是多长?这取决于刷新数据的频率。