Кешування і ваші запити до бази даних

Якщо у вас велика відвідуваність на сайті, то значить, безліч людей читають ваші статті (це добре). Це призводить до того, що до бази йде величезна кількість запитів (це не дуже добре).

І що ж ми будемо з цим робити? Кращий спосіб - це кешування результатів, які дістаються з бази. Таким чином, коли перший користувач відкриє статтю, вона витягне з бази, а ось в наступні рази вона буде показуватися з кешу. Ця техніка дозволить MySQL сервера трохи відпочити або сконцентрувати свою міць на інші справи.

Існує велика кількість кеш-механізмів, але ми створимо свій. У більшості випадків, його буде достатньо.

Створимо спеціальний клас:

Збережіть цей код у файлі cache.php

Код досить-таки простий, тому я не буду пояснювати його роботу. Хіба що, зазначу, що ми використовуємо функції serialize і unserialize, які перетворюють будь-який об'єкт в рядок і навпаки.

Ось як ми можемо використовувати наш клас:

Цей код дозволить значно скоротити кількість запитів до бази даних. Але тут є нюанс! При будь-якій зміні в статті, необхідно скинути кеш (видалити його) для того, щоб створився новий. Для поновлення можете використовувати цей код:

Коли ви видалите кеш, то нова версія статті з'явиться на сайті. І все буде добре!

  • По-моєму робота з файловою системою - трудомістка штука, треба заміряти час і вирішити об'єктивно. Навіщо клас? Незручно адже. Можна створити ф-ції cache ($ filename) для читання і cache ($ filename, $ data) для запису / видалення. Можна ж створювати однойменні ф-ції з різним набором аргументів? Чому багато хто думає, що об'єкти - це круто? Круто, але все добре в міру.

    Денис Ніканоров

    А що круто. за допомогою об'єктів можна наприклад розмежувати доступ, але іноді деякі захоплюються і виходить дуже громіздкий код. використання ООП також має купу плюсів і в складних проектах краще використовувати ООП, хоча можна обмежиться іноді і просто набором функцій. І ще такий підхід важливий у MVC!

    Саме тут ООП зайве.

  • Вітаю! Я може і не по темі, але думаю що тут люди в mysql нишпорять. Хотів дізнатися чому коли я через форму занаша дані в БД у мене в БД заноситься порожня клітинка. Та й перевірка через IF ELSE показує що дані в БД додані. Та й до речі не заносяться тільки якщо через форму тобто через змінну! хоча заноситься через форму але заноситься як порожня клітинка, а якщо через код на пряму писати то заноситься все відмінно!

    код запиту повинен бути коректний, з'єднання активно, неймпоцепін, при потребі, застосований. сформуйте код запиту в окремій змінної і виведіть його в файл або в браузер. текстові записи в цьому коді обов'язково повинні бути укладені в програмістські лапки і їх текст оброблений за допомогою mysql_real_escape_string (). простіше буде, якщо приведете код запиту

  • 1. може, тут має сенс зробити більш витончено? також і з записом: 2. невелике доповнення для новачків даний клас можна досить просто використовувати в класі роботи з mysql (який обов'язково повинен бути). тільки імена файлів потрібно генерувати автоматично (для простоти), припустимо, за допомогою md5-запиту. 3. можна кешувати не всі запити, а тільки особливо загальмувати, що дасть просто чумовой виграш в продуктивності. крім того, не можна кешувати дані, які повертають, припустимо, випадкові вибірки з БД (ну це зрозуміло). 4. якщо використовувати memcache, швидкість зросте багаторазово. правда, на віртуальних серверах таке навряд чи хто робить.

  • Насправді не все так просто. При збільшенні кількості вставки / вилучення дані будуть псуватися, тому що в коді відсутня блокування файлу при читанні / запису і один процес може зчитувати дані в той момент, коли інший процес буде писати в той же файл.

  • international
  • в версії php 5.5+ не проходить через серіалайз половина даних через що даний метод не є підходящим.

  • Що за жах! Робота з файлами гальмує роботу в цілому! Навіть починаючи з ОС Windows 7 все файли проіндексовані в БД. Так само це я переконався в собственой цмс-ке.

    Кешування і ваші запити до бази даних

    За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!

    Кешування і ваші запити до бази даних

    Кешування і ваші запити до бази даних

    Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!

    Кешування і ваші запити до бази даних

    Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.

    Кешування і ваші запити до бази даних

    Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!

    Схожі статті