You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FiveM站点PHP获取服务器玩家数时连接超时问题

FiveM服务器状态接口连接超时解决方案

核心根因

连接超时和代码逻辑无关,是Aruba.it共享虚拟主机的默认出站规则导致:Aruba会默认拦截所有去往非80/443标准端口的出站TCP请求,本地测试30120端口开放不代表Aruba主机的出站网络放行了该端口。

前置验证

先在Aruba主机上运行以下测试代码确认拦截问题:

<?php
// 测试30120端口连通性
$testConn = @fsockopen('fivem.lrfreeroamitalia.it', 30120, $errno, $errstr, 5);
var_dump($testConn, $errno, $errstr);
?>

如果返回结果为bool(false),即可确认是主机出站防火墙拦截,无需再排查代码、服务器端口配置问题。

可落地方案

  • 方案1(最直接):提交Aruba工单申请放行规则
    直接给Aruba售后提交工单,说明需要放开对自己FiveM服务器IP的30120端口TCP出站访问权限,一般1-2个工作日即可处理完成,处理完成后接口即可正常请求。
  • 方案2(无需等工单):用反向代理把接口映射到标准端口
    给FiveM服务器的30120服务配置反向代理,将/dynamic.json接口映射到域名的80/443标准端口下,把代码里的请求地址替换为映射后的标准端口地址即可绕开拦截。

代码优化建议

原有代码缺少超时控制、错误捕获、字段校验逻辑,接口异常时会拖慢整页加载甚至抛出PHP警告,替换为以下稳定版本:

<?php
// 替换为最终可用的接口地址
$apiEndpoint = 'http://fivem.lrfreeroamitalia.it:30120/dynamic.json';
$conn = curl_init($apiEndpoint);
curl_setopt_array($conn, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 3, // 连接超时限制3秒
    CURLOPT_TIMEOUT => 5, // 总请求超时限制5秒
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_SSL_VERIFYPEER => false
]);
$resp = curl_exec($conn);
$httpStatus = curl_getinfo($conn, CURLINFO_HTTP_CODE);
curl_close($conn);

$playerDisplay = '0/0';
if ($httpStatus === 200 && $resp) {
    $serverData = json_decode($resp, true);
    if (isset($serverData['clients'], $serverData['sv_maxclients'])) {
        $playerDisplay = sprintf('%d/%d', $serverData['clients'], $serverData['sv_maxclients']);
    }
}
echo $playerDisplay;
?>

额外优化提示

接口请求完成后建议增加10-30秒的本地文件缓存,不要每次用户访问页面都实时请求FiveM服务器,避免FiveM侧网络波动时拖慢网站加载速度。


内容的提问来源于stack exchange,提问作者Luis De La Vega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 05:36:47