За последние 24 часа нас посетили 20958 программистов и 1131 робот. Сейчас ищут 357 программистов ...

Кеширование и php

Тема в разделе "PHP для новичков", создана пользователем Nubcoder32, 18 апр 2021.

  1. Nubcoder32

    Nubcoder32 Новичок

    С нами с:
    23 мар 2021
    Сообщения:
    27
    Симпатии:
    0
    Добрый день. Вопрос по кешированию PHP.
    Вводные данные:
    Сайт работает с таблицей, где на текущий момент 70к записей, и это число очень быстро растет.
    После выборки и перед выводом данные проходят некую обработку (прогон в цикле, математические операции и т.п), поэтому что бы снизить нагрузку на сервер возникла идея кешировать результат, что бы каждый раз не брать с базы и не повторять обработку.

    Собственно само кеширование
    PHP:
    1. public function set($key, $data, $seconds = 3600){
    2.     if($seconds){
    3.         $content['data'] = $data;
    4.         $content['end_time'] = time() + $seconds;
    5.         if(file_put_contents(CACHE . '/' . md5($key) . '.txt', serialize($content))){
    6.             return true;
    7.         }
    8.     }
    9.     return false;
    10. }
    Вопрос 1): кеш идет в текстовые файлы, и будет ли все это дело нормально работать, когда таких файлов будет, скажем 500к
    Вопрос 2) Верна ли моя теория, что при использовании кеша и обхода выборки и обработки данных из бд можно снизить нагрузку и повысить скорость.
     
  2. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    615
    Симпатии:
    24
    В эпоху SSD не смысла хранить кеш на файлах, БД - это такие же файлы на таком же SSD, бери и обращайся к ним, они для этого и созданы :)
     
  3. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Ну, в принципе, идея здравая, сама по себе.
    Если затраты на некую обработку велики, то стоит обработанное и частозапрашиваемое хранить в отдельной таблице. Периодически её обновляя.
     
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    845
    Симпатии:
    130
    Если сервер свой, можно посмотреть в сторону кэширования средствами самого PHP (Opcache), файлы цеплять через require/require_once, в общем случае хранить в БД тоже имеет смысл. И обязательно следить за актуальностью кэша.
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Кешируются готовые выборки, поэтому какой-то смысл есть. Особенно если действительно необходима дообработка выборки на PHP, и это доработка ресурсоёмкая. Видел реализации кеша на базе - в отдельную таблицу для кеша. Суть в том, чтоб не делать повторно тяжёлые выборки. Хотя лучше использовать тогда какой-нибудь Redis, чтоб кеш был в оперативе, и быстрее доступен.

    И да, базу тоже не дураки писали, какое-то кеширование есть прямо на уровне базы.
     
    Вероломство нравится это.