Как кэшировать запрос с phpFastCache без Composer? - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь использовать phpFastCache для всех нужд кэширования, но я действительно не понимаю, как его использовать. Я понимаю, что это примеры, и да, я попробовал их, и они успешны, но это не помогает мне с точки зрения того, что мне нужно делать.

Я пытаюсь кэшировать запрос (точный исходный протокол запроса Valve.)

Вот результаты, также я использую отдельный скрипт SourceQuery, и это только результаты (queryresults.php):

$serveroneip = "example.ip";
$serveroneport = "27015"
$server = new SourceQuery($serveroneip, $serveroneport);
$infos  = $server->getInfos();

А затем просто добавьте это на страницу index.php:

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

Это просто напечатало бы текущее количество игроков и общее количество игроков на исходном сервере. Я в основном пытаюсь кэшировать этот запрос, потому что это помогает время загрузки страницы.

Если я звучу как полный нуб, мне очень жаль. Это всего лишь проблема, которая расстраивала меня последние несколько дней, и я выглядел здесь как последнее средство. Если вам нужна дополнительная информация, я с радостью предоставлю ее! Большое спасибо за помощь!

1 Ответ

0 голосов
/ 19 мая 2018

Начиная с Phpfastcache V5, библиотека соответствует PSR6 интерфейсу

Так что в основном код будет довольно простым и даже проще с композитором:

composer require phpfastcache/phpfastcache

Если он не установлен глобально:

php composer.phar require phpfastcache/phpfastcache

Файл composer.phar можно скачать здесь: https://getcomposer.org/composer.phar

Теперь код, в вашем случае:

use Phpfastcache\CacheManager;

/**
 * You have two many ways...
 * Via composer:
 */
require 'vendor/autoload.php';

/**
 * Or if you have absolutely no choice, we provide a standalone autoloader
 */
// require 'phpfastcache/src/autoload.php';

/**
 * We are using the default but most used driver: Files
 * You can use redis/predis, etc but it's a bit more complexe
 */
$cachePool = CacheManager::getInstance('Files');
$cacheItem = $cachePool->getItem('mySteamServer');

/**
 * Does we found something in cache ?
 */
if($cacheItem->isHit()){
    /**
     * Yes, let's use it
     */
    $infos = $cacheItem->get();
}else{
    /**
     * Nahh, let's retrieve the server data and cache them
     */
    $serveroneip = "example.ip";
    $serveroneport = "27015";
    $server = new SourceQuery($serveroneip, $serveroneport);
    $infos  = $server->getInfos();
    $cacheItem->set($infos)->expiresAfter(300);// The TTL in seconds, here is 5 minutes
    $cachePool->save($cacheItem);// Persist the cache item
}

/**
 * Rest of your code goes here
 */

В любом случае, я теплопредлагаю вам воспользоваться композитором.Это упростит управление зависимостями и позволит вам полностью контролировать автоматическое обновление, управление конфликтами, автозагрузку кошмара и т. Д.

...