仅在上次运行后1小时内运行PHP代码

时间:2014-09-03 20:06:28

标签: php wordpress global-variables scope static-variables

所以我有一堆数据库和wordpress查询继续创建排行榜。 查询数据,计算,然后更新似乎要做很多事情,并且真正减慢排行榜显示页面的速度。所以我试图让查询和计算只有在上次查询后超过一个小时才会发生。到目前为止,这是我的代码:

<?php
    static $lastQueryTime;

    if( !isset($lastQueryTime) || ($now > $lastQueryTime + (60*60)) ){
        $lastQueryTime = $now;

        //PHP to run...Querying, calculating, updating
    }
?>

我也试过&#34;全球&#34;而不是&#34;静态&#34;,但似乎都不起作用,查询总是在页面加载时发生。

3 个答案:

答案 0 :(得分:2)

PHP代码是无状态的,除非你这样做 - static变量不能在请求中存活,或者更确切地说,除非你手动持有它,否则什么都不做。

您必须将$lastQueryTime存储在磁盘或数据库中才能使其正常工作。

答案 1 :(得分:2)

staticglobal不是跨不同实例保存数据的机制。它们只在一个脚本运行中保留数据,然后一切都消失了。您需要将数据存储在外部,数据库,内存缓存,文件等中。

答案 2 :(得分:0)

$lastQueryTime写入脚本末尾的文件,并在脚本中将该文件包含在顶部。然后测试$lastQueryTime是否超过一小时前。如果是,请继续执行脚本并将新时间保存到文件中。否则,什么都不做。