我目前正在使用PHP开发一个脚本来获取网页。事实是,通过这样做,我偶尔会对特定网站提出过多请求。为了控制任何溢出,我想跟踪每个域在过去一小时左右完成了多少请求。它不需要是完美的,只是一个很好的估计。
除sqlite2外,我无权访问数据库。我真的很喜欢一些非常简单的东西,因为通常会有很多更新,这对于sqlite数据库来说有点沉重。如果没有人有神奇的解决方案,我会选择sqlite,但我很好奇你能想出什么
非常感谢
答案 0 :(得分:0)
我找到了解决我的困境的答案,所以我想我会分享:
假设设置了$ file和$ max并进行了一些错误处理。 基本上,它使用时间戳有10个字节(带换行符的+1)的事实。 每隔一段时间,就会调用clean()来消除超过3600秒的时间戳
function check() {
if (file_exists($file))
return (filesize($file) / 11) < $max;
else
return true;
}
function writeLog() {
file_put_contents($file, time() . "\n", FILE_APPEND);
}
function clean() {
$f = fopen($file, 'r');
while ($time = fgets($f)) {
if ($now - $time < 3600) break;
}
while (!feof($f))
$time .= stream_get_contents($f);
fclose($f);
file_put_contents($file, $time);
}
欢呼声