Rate Limiter - X Requests per Y Seconds - Server Side Using Files
ALLOW WRITE PERMISSION
<?php
require_once('ratelimiter.php');
//...
function getFromAPI(){
if (ratelimiter(8, 1)){//8 REQUESTS PER SECOND
return file_get_contents("API_LINK");
}
else{
return false;
}
}
<?php
require_once('ratelimiter.php');
for ($i=1; $i <= 10; $i++) {
if (ratelimiter(8, 1)){//8 REQUESTS PER SECOND
echo "$i - REQUEST DONE";
}
else{
echo "$i - ERROR - Rate Limit";
}
}
<?php
require_once('ratelimiter.php');
for ($i=1; $i <= 10; $i++) {
$rate = ratelimiter(7, 1, false);
while(!ratelimiter(7, 1, true)){//ONLY VERIFY
usleep(1 * 1000000);
}
}
<?php
require_once('ratelimiter.php');
for ($i=1; $i <= 10; $i++) {
if (ratelimiter(5, 1, false, 'apple')){
echo 'Eat apple';
}
else
{
echo 'Error - apple';
}
if (ratelimiter(5, 1, false, 'orange')){
echo 'Eat orange';
}
else
{
echo 'Error - orange';
}
}
<?php
require_once('ratelimiter.php');
for ($i=1; $i <= 5; $i++) {
if (ratelimiter(10, 1)){
echo 'Foo';
}
else
{
echo 'Error';
}
}
var_dump(ratelimiter(10, 1, true));
//return true
The function parameters define the file name. Examples:
ratelimiter(3, 2)
- request_allowance__3_2.dat
- request_lastcheck__3_2.dat
ratelimiter(10, 1)
- request_allowance__10_1.dat
- request_lastcheck__10_1.dat
ratelimiter(10, 1, false, 'CUSTOM_NAME')
- request_allowance_CUSTOM_NAME_10_1.dat
- request_lastcheck_CUSTOM_NAME_10_1.dat