我有这个PHP脚本,通过保存IP地址&访问时间到一个单独的文件:
<?PHP
$file = "users.ini";
$ip = $_SERVER['REMOTE_ADDR'];
$time = time();
$content = @file_get_contents($file);
$new_content = $ip." = ".$time;
$content .= $new_content."\r\n";
@file_put_contents($file,$content);
$users = @parse_ini_file($file);
$count = 0;
foreach($users as $ip=>$time){
if($time >= time() - 300){ // past 3 minutes
$count++;
}
}
echo $count;
?>
问题是,由于拥有大量访问者,“users.ini”文件只是不断增长,并且在某个时刻脚本因此而崩溃。 问题是,如何以某种方式“重置”“users.ini”文件?我不需要那里堆积的所有数据,只需要最后2分钟。 任何指针将不胜感激。谢谢。
PS:作为临时措施,我设置了一个cronjob来每隔10分钟删除一次文件。但我认为应该有一个更优雅的解决方案。
答案 0 :(得分:0)
<?PHP
$file = "users.ini";
$ip = $_SERVER['REMOTE_ADDR'];
$time = time();
$content = @file_get_contents($file);
$new_content = $ip." = ".$time;
$content .= $new_content."\r\n";
@file_put_contents($file,$content);
$users = @parse_ini_file($file);
$count = 0;
$active_users ="";
foreach($users as $ip=>$time){
if($time >= time() - 300){ // past 3 minutes
$count++;
// add active users to the files only
$active_users = $ip." = ".$time;
@file_put_contents($file,$active_users);
}
}
echo $count;
?>
这个应该有帮助