防止表更新查询20秒。可能?

时间:2014-03-11 10:58:13

标签: php mysql sql triggers

这是问题所在, 我有一个PHP文件每秒调用20秒。如果我写一个查询来更新将执行20次的表。但是我希望它只能在20次通话中更新一次。 20秒后,表需要恢复以进行进一步更新。我怎么能做到这一点?是什么触发自动阻止它一段时间

I have tried something so far,
  1. 我在更新当前时间戳的表中保留了记录,我正在检查下一个呼叫的时间戳,如果超过20秒,我将更新它,否则只需传递更新脚本。它会工作,但更有效的方法?

1 个答案:

答案 0 :(得分:1)

有趣且有趣的方法,在PHP 5.3上,您可以使用APC缓存来存储变量20秒,并且如果它不存在则运行您的查询。这将在PHP 5.5中改变,PHP采用不同的缓存方法。

if(!$value = apc_fetch('key')) { 
    // Run your query and store the updated key
    apc_store('key', true, 20);  
}

枯燥乏味的方法,但未来的证明是使用会话变量来有效地做同样的事情,并检查它是否在20秒的限制内。

if(strtotime($_SESSION['timer']) > strtotime("-20 seconds")) {
    // run your query and update the timer with the update time.
    $_SESSION['timer'] = date();
}