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

如何不使用Composer用phpFastCache缓存SourceQuery查询结果?

用phpFastCache缓存Source Query查询结果的解决方案

别担心,我来一步步帮你把phpFastCache集成到你的Source Query流程里,轻松实现缓存查询结果、提升页面加载速度的需求!

步骤1:确保phpFastCache已正确安装

如果还没安装phpFastCache,最简单的方式是用Composer:

composer require phpfastcache/phpfastcache

如果是手动下载的包,记得在你的脚本顶部引入phpFastCache的自动加载文件:

require_once '/path/to/phpfastcache/autoload.php';

步骤2:修改queryresults.php添加缓存逻辑

我们要做的是:先检查缓存里有没有现成的查询结果,如果有就直接用;如果没有(或者缓存过期了),再执行Source Query,然后把结果存入缓存。这样就能避免每次加载页面都发起耗时的服务器查询了。

修改后的queryresults.php代码如下(我加了详细注释,方便你理解):

<?php
// 引入phpFastCache自动加载(如果用Composer安装,这步可能已经自动处理了,没反应的话加上)
require_once __DIR__ . '/vendor/autoload.php';

use Phpfastcache\CacheManager;
use Phpfastcache\Config\ConfigurationOption;

// 初始化phpFastCache,这里用文件缓存(适合新手,不需要额外服务)
CacheManager::setDefaultConfig(new ConfigurationOption([
    'path' => __DIR__ . '/cache', // 缓存文件存放的目录,要确保这个目录有读写权限
]));

// 获取缓存实例
$cache = CacheManager::getInstance('Files');

// 定义唯一的缓存键:用服务器IP+端口组合,避免不同服务器的缓存冲突
$cacheKey = "source_query_{$serveroneip}_{$serveroneport}";

// 设置缓存过期时间,比如5分钟(300秒),你可以根据需求调整
$cacheTTL = 300;

// 先尝试从缓存获取数据
$infos = $cache->getItem($cacheKey)->get();

// 如果缓存里没有数据,或者缓存过期了,就执行Source Query
if (is_null($infos)) {
    $serveroneip = "example.ip"; 
    $serveroneport = "27015";
    $server = new SourceQuery($serveroneip, $serveroneport);
    $infos = $server->getInfos();

    // 把查询结果存入缓存
    $cacheItem = $cache->getItem($cacheKey);
    $cacheItem->set($infos)->expiresAfter($cacheTTL);
    $cache->save($cacheItem);
}
?>

步骤3:index.php无需大改动

你的index.php代码几乎不用改,现在引入queryresults.php后,$infos会优先从缓存读取,只有缓存失效时才会发起新的查询:

<?php include ("queryresults.php") ?>
<p><?php echo $infos['players'] . ' / ' . $infos['places']; ?></p>

(注意:你原来的代码里用了单引号拼接,这里改成了PHP的echo输出,避免语法错误)

额外小贴士

  • 确保/cache目录有读写权限,不然缓存无法写入
  • 缓存过期时间可以根据你的需求调整:如果玩家数更新频繁,可以设成1分钟(60秒);如果不需要太实时,10分钟也没问题
  • 如果担心查询失败导致缓存为空,可以加个错误处理:比如查询失败时,保留旧的缓存数据(可以用$cache->getItem($cacheKey)->isHit()来判断之前有没有缓存)

内容的提问来源于stack exchange,提问作者Tyler Shannon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:19:52