Кэшировать результаты запроса MySQL вручную в текстовый файл - PullRequest
2 голосов
/ 11 сентября 2010

Есть ли способ кэшировать результаты запроса mysql вручную в текстовый файл?

Пример:

$a=1;
$b=9;
$c=0;
$cache_filename = 'cached_results/'.md5("$a,$b,$c").'.txt';
if(!file_exists($cache_filename)){
    $result = mysql_query("SELECT * FROM abc,def WHERE a=$a AND b=$b AND c=$c");
    while($row = mysql_fetch_array($result)){
        echo $row['name'];
    }
    // Write results on $row to the txt file for re-use
}else{
    // Load results just like $row = mysql_fetch_array($result); from the txt file
}

Исходный запрос содержит больше WHERE и объединений, использующих несколько таблиц.Так это возможно?Если да, пожалуйста, объясните.

Спасибо, pnm123

1 Ответ

3 голосов
/ 11 сентября 2010

Если вы уверены, что ваши данные долго живут, вы, безусловно, можете кэшировать данные, временно сохранив их в текстовом файле.

if (!file_exists($cachefile)) {
    // Save to cache
    $query=mysql_query('SELECT * FROM ...');
    while ($row=mysql_fetch_array($query))
        $result[]=$row;
    file_put_contents($cachefile,serialize($result),LOCK_EX);
}
else
    // Retrieve from cache
    $result=unserialize(file_get_contents($cachefile));
foreach ($result as $row)
    echo $row['name'];

Хотя использование APC, MemCache или XCache было бы лучшей альтернативой, если учесть производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...