Как сделать кеширование в php - PullRequest
1 голос
/ 11 июня 2010

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

$file = 'cache_toppers.txt';
if (file_exists($file) &&
    filemtime($file) > (time() - $expire)) {
    $records = unserialize(file_get_contents($file));
} else {
   include("kalvidbconnect.php");

    $query = "SELECT * FROM vpfmsttoppers";
    $result = mysql_query($query)
        or die (mysql_error());
    while ($record = mysql_fetch_array($result) ) {
        $records[] = $record;
    }
    $OUTPUT = serialize($records);
    $fp = fopen($file,"w");
    fputs($fp, $OUTPUT);
    fclose($fp);
}

Спасибо, Kamatchi.D

Ответы [ 5 ]

2 голосов
/ 11 июня 2010

Есть несколько готовых к использованию расширений PHP, обеспечивающих функциональность кеша. Некоторые из них:

это те, кого я знаю, но, несомненно, их гораздо больше.

0 голосов
/ 11 июня 2010

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

0 голосов
/ 11 июня 2010

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

http://se.php.net/manual/en/ref.sem.php

Может быть, APC использует ту же технику, я не знаю, но если вы не хотите устанавливать PECL-расширения, возможно, стоит создать собственную обработку кэша.

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

0 голосов
/ 11 июня 2010

Просто мысль, не уверен, но как насчет использования CouchDB !? Вот хороший учебник по IBM http://www.ibm.com/developerworks/opensource/library/os-php-couchdb/index.html?ca=drs-

0 голосов
/ 11 июня 2010

Ну, тогда используйте кеш, например APC - apc_store() / apc_fetch()

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