Вызов функции-члена fetch () ошибка при использовании кеш-класса в платформе Flight

Я всегда использовал один и тот же класс кеша для кеширования массива элементов в файл, и каждый раз он работал нормально.
Но когда я пытаюсь использовать его с микро фреймворком Flight PHP, я не могу заставить его работать.
Вот моя часть index.php, которая ссылается на страницы с кэшем ведьм:

Flight::route('/results/@uzklausa', function($uzklausa){
//include 'funcs/functions.new.php';
include 'funcs/simple_html_dom.php';
Flight::register('db2', 'PDO', array('mysql:host=localhost;port=3306;dbname=rasti_failai', 'root', 'pw'), function($db) {
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
});
//Flight::etag($uzklausa);
Flight::set('uzklausa', $uzklausa);
Flight::render('search_main', array('uzklausa' => $uzklausa));
Flight::render('footer');
});

И вот мой класс кеша ведьмы в файле search_main.php:

$uzkla = str_replace('-', ' ', Flight::get('uzklausa'));

class FileCache {

// Funkcija issaugoti informacijai
function store($key,$data,$ttl) {

// Atidarom faila
$h = fopen($this->getFileName($key),'w');
if (!$h) throw new Exception('Could not write to cache');
// Serializinam su  TTL
$data = serialize(array(time()+$ttl,$data));
if (fwrite($h,$data)===false) {
throw new Exception('Could not write to cache');
}
fclose($h);

}

// paprasta funkcija kad surasti faila pagal key
private function getFileName($key) {

return 'newcache/s_cache' . md5($key);

}

//grazina false on failure
function fetch($key) {

$filename = $this->getFileName($key);
if (!file_exists($filename) || !is_readable($filename)) return false;

$data = file_get_contents($filename);

$data = @unserialize($data);
if (!$data) {

// Unlinkinam file kai unserializing failed
unlink($filename);
return false;

}

// tikrinam ar expired
if (time() > $data[0]) {

// Unlinkinam
unlink($filename);
return false;

}
return $data[1];
}

}

Затем идет моя функция, которая возвращает массив, который должен быть кэширован:

function pirmi_rezultatai($uzklausa)

{ some php code wich works fine and is displayed if no cache is on }

а затем функция, которая использует cacheClass для кэширования массива:

$cache = new FileCache();
function rezultataiVienas($uzklausa) {

global $cache;

// Unikalus key ID
$key = 'pirmas-'.$uzklausa.''; //ALso tried changing this to $key = 'pirmas'; for debug, nothing changed

// tikrinam ar jau cachintas
if (!$data = $cache->fetch($key)) {
//Jei nera atliekam nauja funkcija ir paimam duomenis
$data = pirmi_rezultatai($uzklausa);

//ir juos uzcachinam
$cache->store($key,$data,1440000); // 1440000 2592000 12960000
}
return $data;
}

$pirmiRezai = rezultataiVienas($uzkla);
print_r($pirmiRezai);

и с этим кодом при входе на mydomain.com/results/anything я получаю:
Неустранимая ошибка: вызов функции-члена fetch () для необъекта в /var/www/ctifiles/views/search_main.php в строке 136

когда я меняюсь

$pirmiRezai = rezultataiVienas($uzkla);

в

$pirmiRezai = pirmi_rezultatai($uzkla);

в конце кода, он работает отлично, поэтому проблема с cacheClass.
Также этот класс хорошо работает даже в других доменах на одном веб-сервере. Так что я думаю, проблема в использовании фреймворка?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]