<?php
// 连接 Redis(需要安装 Redis 扩展)
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 认证 Redis 密码
$redis->auth('123456'); // 请替换为你的实际 Redis 密码
$ip = $_SERVER['REMOTE_ADDR']; // 获取访客 IP
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
// $key = "ip_limit:$ip"; // 生成 Redis 键名//整站
$key = "ip_limit:{$ip}:{$path}"; // 按接口路径区分
$limit = 100; // 允许的最大请求数
$timeWindow = 60; // 统计时间窗口(秒)
// echo $ip;
// 获取当前 IP 的访问次数
$count = intval($redis->get($key));
if ($count === false) {
// 如果没有记录,则初始化
$redis->set($key, 1, $timeWindow);
} elseif ($count >= $limit) {
// 如果超限,则拒绝访问
http_response_code(403);
die("访问过于频繁,请稍后再试。");
} else {
// 增加访问计数
$redis->incr($key);
}
// echo $count;
// 业务逻辑代码
echo $count ."次,正常访问:" . date('Y-m-d H:i:s');