Кэширование PHP Simple HTML DOM Parser - PullRequest
4 голосов
/ 18 мая 2011

Я использую PHP HTML DOM Parser для извлечения данных с внешнего веб-сайта. Чтобы уменьшить нагрузку и ускорить время рендеринга страницы, я хочу кэшировать данные, которые извлекаю на определенный период. Как я могу это сделать?

Ответы [ 3 ]

7 голосов
/ 18 мая 2011

Я написал эту функцию файлового кэша, которая в основном просто заменяет file_get_contents.Вы можете указать время, в течение которого кэш должен длиться в $offset или полностью переопределить кеш с помощью $override.Если вы не хотите использовать / tmp /, просто измените этот каталог на то, что вы можете читать / записывать.

function cache_get_contents($url, $offset = 600, $override = false) {
    $file = '/tmp/file_cache_' . md5($url);
    if (!$override && file_exists($file) && filemtime($file) > time() - $offset)
        return file_get_contents($file);

    $contents = file_get_contents($url);
    if ($contents === false)
        return false;

    file_put_contents($file, $contents);
    return $contents;
}
1 голос
/ 18 мая 2011

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

Если у вас есть доступ к некоторому виду кэширования памяти (например, memcached), это было бы идеально.

1 голос
/ 18 мая 2011

Вы можете создавать локальные файлы с помощью HTML, а затем отслеживать пути к файлам в $ SESSION.Если у вас есть место на диске и вы можете запустить базу данных, вы можете использовать базу данных, чтобы сделать то же самое.Соединение с базой данных и запрос по URL-адресу, который вы ищете, вообще не добавят больших затрат.

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