php开启APCU扩展,提前把常用文件加载到内存中
安装 APCu 扩展
确保 PHP 已安装 APCu 扩展:sudo apt install php-apcu
这里是按照默认版本,也可以按php版本安装,比如 apt install php7.4-apcu就是安装php7.4版本的apcu。
在 PHP 中加载 IP 列表到共享内存
创建一个 PHP 脚本,定时加载 IP 列表到 APCu 缓存中:<?php // 文件路径 $file = '/etc/nginx/ip_list.txt';// 加载文件到内存 function loadIpList($file) { $ipList = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); if ($ipList === false) { throw new Exception("无法读取 IP 列表文件:$file"); } // 存储到 APCu apcu_store('ip_list', $ipList); }// 加载 IP 列表 try { loadIpList($file); echo "IP 列表加载成功!\n"; } catch (Exception $e) { echo $e->getMessage() . "\n"; }
将此脚本设置为定时任务(如每分钟更新一次):
crontab -e
添加任务:
* * * * * php /path/to/load_ip_list.php
PHP 脚本调用内存中的 IP 列表
在业务逻辑中读取 APCu 中的 IP 列表并进行处理:<?php // 检查客户端 IP 是否在列表中 $clientIp = $_SERVER['REMOTE_ADDR']; $ipList = apcu_fetch('ip_list'); // 从 APCu 读取 IP 列表 if (in_array($clientIp, $ipList)) { echo "您的 IP 被允许访问"; } else { echo "禁止访问"; }