上限或重置php生成的文件

时间:2014-03-29 09:13:32

标签: php

我有这个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分钟删除一次文件。但我认为应该有一个更优雅的解决方案。

1 个答案:

答案 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;
?>

这个应该有帮助