所以我有一堆数据库和wordpress查询继续创建排行榜。 查询数据,计算,然后更新似乎要做很多事情,并且真正减慢排行榜显示页面的速度。所以我试图让查询和计算只有在上次查询后超过一个小时才会发生。到目前为止,这是我的代码:
<?php
static $lastQueryTime;
if( !isset($lastQueryTime) || ($now > $lastQueryTime + (60*60)) ){
$lastQueryTime = $now;
//PHP to run...Querying, calculating, updating
}
?>
我也试过&#34;全球&#34;而不是&#34;静态&#34;,但似乎都不起作用,查询总是在页面加载时发生。
答案 0 :(得分:2)
PHP代码是无状态的,除非你这样做 - static
变量不能在请求中存活,或者更确切地说,除非你手动持有它,否则什么都不做。
您必须将$lastQueryTime
存储在磁盘或数据库中才能使其正常工作。
答案 1 :(得分:2)
static
和global
不是跨不同实例保存数据的机制。它们只在一个脚本运行中保留数据,然后一切都消失了。您需要将数据存储在外部,数据库,内存缓存,文件等中。
答案 2 :(得分:0)
将$lastQueryTime
写入脚本末尾的文件,并在脚本中将该文件包含在顶部。然后测试$lastQueryTime
是否超过一小时前。如果是,请继续执行脚本并将新时间保存到文件中。否则,什么都不做。