Как ограничить количество пользовательских запросов за минуту

Пользователь будет запрашивать файл по номеру через URL, напримерscript.php?userid=222, В этом примере будет показана запись файла # 222.

Теперь я хочу ограничить количество файлов на одного (удаленного IP) пользователя максимум 5 различными записями в минуту. Однако пользователь должен иметь возможность доступа к одной и той же записи идентификатора любое количество раз.

Таким образом, пользователь может получить доступ к файлу № 222 любое количество раз, но если (удаленный IP) пользователь получает доступ более чем к 5 другим различным записям в минуту, то он должен показать ошибку.

Например, предположим, в течение минуты сделаны следующие запросы:

script.php?userid=222
script.php?userid=523
script.php?userid=665
script.php?userid=852
script.php?userid=132
script.php?userid=002

тогда при последнем запросе должно появиться сообщение об ошибке.

Вот основной код:

$id = $_GET['userid'];
if (!isset($_GET['userid']) || empty($_GET['userid'])) {
    echo "Please enter the userid";
    die();
}

if (file_exists($userid.".txt") &&
        (filemtime($userid.".txt") > (time() - 3600 * $ttime ))) {
    $ffile = file_get_contents($userid.".txt");} else {
    $dcurl = curl_init();
    $ffile = fopen($userid.".txt", "w+");
    curl_setopt($dcurl, CURLOPT_URL,"http://remoteserver.com/data/$userid");
    curl_setopt($dcurl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($dcurl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
    curl_setopt($dcurl, CURLOPT_TIMEOUT, 50);
    curl_setopt($dcurl, CURLOPT_FILE, $ffile);
    $ffile = curl_exec($dcurl); 
    if(curl_errno($dcurl)) // check for execution errors
    {
        echo 'Script error: ' . curl_error($dcurl);
        exit;
    }
    curl_close($dcurl);
    $ffile = file_get_contents($userid.".txt");
}

Ответы на вопрос(1)

Ваш ответ на вопрос