Создать систему кэширования PHP в базе данных MySQL?

0

Я создаю веб-службу, которая часто сбрасывает данные с удаленных веб-страниц. После соскабливания этих данных у меня есть простой многомерный массив информации для использования. Процесс скремблирования достаточно подвержен налогообложению на моем сервере, и загрузка страницы занимает некоторое время. Я подумывал о добавлении простой системы кэширования с использованием базы данных MySQL, где я создаю одну строку на удаленной веб-странице с массивом информации, извлеченной из нее, которая хранится в виде строки в кодировке JSON. Это достаточно хорошая система? Или что-то вроде текстового файла на веб-странице будет лучше?

  • 4
    @Kenaniah - Если вам нужно предисловие «Без обид» - возможно, вам стоит просто научиться давать советы конструктивно. Этому ребенку 17 лет.
  • 0
    @Matt - Да, я отправлю конструктивный ответ через секунду ...
Теги:
performance
caching

3 ответа

1
Лучший ответ

Поскольку вы очищаете несколько веб-страниц и хотите, чтобы ваши данные были постоянно кэшированы, у вас есть несколько вариантов - лучшим из которых будет использование memcache или базы данных, такой как MySQL. Использование текстовых файлов - не очень хорошая идея, потому что вам придется сериализовать/десериализовать свои данные и прочитать из вашей файловой системы. Запросить базу данных или memcache во много раз более эффективно.

Поскольку вы, вероятно, ищете свой кеш, который будет несколько настойчивым, я бы предложил пойти с MySQL. Вы просто создали бы таблицу с автоматически увеличивающимся первичным ключом, которая представляет собой столбец для каждого элемента в вашем анализируемом объекте JSON. (Обратите внимание: MySQL в настоящее время не поддерживает массивы. Чтобы имитировать их, вам нужно будет использовать реляционные таблицы или сериализовать данные массива и предоставить их в текстовое поле. Предпочтительным является прежний метод).

Каждый раз, когда вы очищаете страницу, вы запускаете оператор UPDATE для обновления этой информации о отдельной странице в базе данных. Если вы укажете уникальный индекс для того, что вы используете для уникальной идентификации вашей страницы (URL/etc), вы достигнете оптимальной производительности поиска.

  • 0
    Постоянство данных - вот почему я пропустил memcache или что-то подобное. Мой вопрос о запросе кешированной страницы: можно ли просто запрашивать URL-адрес страницы или мне нужно сделать что-то вроде хэша URL-адреса md5 и выполнить запрос для этого?
  • 0
    Можно запросить, используя URL-адрес страницы (так как обычно его можно использовать как уникальный идентификатор). Просто убедитесь, что вы добавили уникальный индекс в это поле в вашей таблице базы данных, так как он по существу будет функционировать как ваш первичный ключ.
1

Если вы хотите хранить кеш локально на одном сервере (например, если ваш сервер mysql и HTTP-сервер находятся в одном окне), вам может быть лучше использовать APC, который является службой кэширования, поставляемой с PHP.

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

"Когда у вас есть молот..."

0

Я не имею тенденций иметь особенно большие конфигурации APC, макс. 64 - 128 МБ. Memcache может перейти на пару гигабайт или, возможно, больше (гораздо больше, если вы запускаете несколько экземпляров). Оба являются также временными - перезапуск Apache, или Memcache (последний немного менее вероятен или часто) потеряет данные

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

Параметры потенциального параметра, в зависимости от того, сколько элементов кэшируются и насколько велики данные, являются, как вы полагаете, файловым кешем, SQlite или другими системами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню