$ts > ($now - $timeWindow)) ); } } if (count($requests) >= $maxRequests) { flock($fp, LOCK_UN); fclose($fp); header('Retry-After: ' . $timeWindow); json_error('Too Many Requests. Please slow down.', 429); } // Record this request $requests[] = $now; // Write updated data back ftruncate($fp, 0); rewind($fp); fwrite($fp, json_encode($requests)); } finally { flock($fp, LOCK_UN); fclose($fp); } } }