За последние 24 часа нас посетили 6823 программиста и 451 робот. Сейчас ищут 285 программистов ...

Memcached

Тема в разделе "PHP для новичков", создана пользователем xShiftx, 11 окт 2018.

Метки:
  1. xShiftx

    xShiftx Новичок

    С нами с:
    27 май 2018
    Сообщения:
    23
    Симпатии:
    0
    В общем у меня используется свой движек БД на базе описания структур в виде массива, который автоматически создает для каждой таблицы БД кэш ячейку и пишут туда MD5 данных сразу скидывая статическую копию таблицы в файл. При любом изменении БД автомтически создается обновленная версия кэш файла статики и конечно же обновляется кэш MD5.

    Таким образом мне требуется только один запрос к базе данных чтобы отобразить главную страницу, которая обычно тянет 5-7 запросов SELECT.

    Вопрос: мне даст что-то memcache или игра не стоит свеч?

    Система обычно потребляет меньше одного мегабайта памяти и выполняется код за 0,05 секунды.

    Мне кажется, что memcache мне не даст ничего - или я ошибаюсь?[​IMG]

    вот сорцы движка БД: https://github.com/xShiftx/Revolver_DBX
     
  2. MouseZver

    MouseZver Старожил

    С нами с:
    1 апр 2013
    Сообщения:
    4.766
    Симпатии:
    769
    Адрес:
    Лень
    обвертка дерьмо, для понимающих взглянуть на 399 строку DBX.php логично while использовать, да ? прикольная переменная $hash ?
    628 строка на ровном месте обделаться.
    от перемен мест слагаемых.... Оптимизацию запросов в один совершенный нужно делать
     
  3. xShiftx

    xShiftx Новичок

    С нами с:
    27 май 2018
    Сообщения:
    23
    Симпатии:
    0
    Я уже все понял за ваш форум. Спасибо.
     
  4. MouseZver

    MouseZver Старожил

    С нами с:
    1 апр 2013
    Сообщения:
    4.766
    Симпатии:
    769
    Адрес:
    Лень
    И тебе не хворать
     
  5. xShiftx

    xShiftx Новичок

    С нами с:
    27 май 2018
    Сообщения:
    23
    Симпатии:
    0
    Мышь, во первых Вы дичЪ, во вторых у вас докопы до одной строчки.
    Возможно это foreach головного мозга?

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

    Про мем кэш ответ будет, или будете просто говном из-за угла по партизански кидаться?
     
  6. mkramer

    mkramer Суперстар

    С нами с:
    20 июн 2012
    Сообщения:
    5.968
    Симпатии:
    1.087
    @xShiftx, 5-7 запросов или 1 чаще всего погоды вообще не делает. Делает разница раз в 100, к примеру. Т.е. было 100 запросов, оптимизировал - стал один, разница есть. А так, один фиг, накладные расходы на чтение файлов кеша примерно такие же, как на обращение к базе (которую неглупые люди писали, она кешит всё, что надо и сама)

    Обращение к Memcached и аналогам - тоже не бесплатная операция, так что в данном случае выигрыша не будет
    --- Добавлено ---
    P.S. написал "чаще всего", потому что если какой-то из 5-7 запросов выполняется, к примеру, 500 мс, а результат считывается из файла/мемкеша за 5 мс, то в кешировании смысл есть.
     
    xShiftx нравится это.
  7. xShiftx

    xShiftx Новичок

    С нами с:
    27 май 2018
    Сообщения:
    23
    Симпатии:
    0
    Ну оно больше как защита от перегруза ресурсов недорогого хостинга задумано. И оправдывает себя в этом плане. Спасибо.
    --- Добавлено ---
    p.s.: комит то слабо сделать?
     
  8. mkramer

    mkramer Суперстар

    С нами с:
    20 июн 2012
    Сообщения:
    5.968
    Симпатии:
    1.087
    Как защита от перегруза тоже пара запросов,если они не супертяжёлые, погоды не делают
     
  9. lastdays

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

    С нами с:
    27 сен 2012
    Сообщения:
    175
    Симпатии:
    37
    У тебя уже кэшируется таблица, если я правильно понял.

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

    Я раз в 5 минут считываю количество тем, постов на форуме, сохраняю все это в память и вывожу, а когда нужно - обновляю. (но не чаще, чем раз в пять минут например).
     
  10. MouseZver

    MouseZver Старожил

    С нами с:
    1 апр 2013
    Сообщения:
    4.766
    Симпатии:
    769
    Адрес:
    Лень
    Все, тебе стрела, завтра после уроков за школой, зашкваренный.
    Во вторых кАсается, тебе даже редактор подсвечивал.
    Вот такой у тебя и код made in china.
    Даже и не начинал, ты лишь сам себя закопал дерьмом, оскорбившись критикой. В школе еще не проходили "От перемен мест слагаемых, сумма не меняется" ?
    У тебя там дыра уязвимости с 628 строки, любой суй не хочу.
    [​IMG]
     
  11. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    1.130
    Симпатии:
    235
    Адрес:
    Татарстан
    поверь ...
    PHP:
    1. public static function escape( $string ) {
    - совсем не делает то что задумано
    хотя бы mysqli_real_escape используй

    а еще не очень понятно - поддержка только простейших запросов?
    А как же все многообразие SQL? JOIN,UNION, вложенные запросы и прочие прелести?
    можно использовать?
     
  12. xShiftx

    xShiftx Новичок

    С нами с:
    27 май 2018
    Сообщения:
    23
    Симпатии:
    0
    Она вроде достаточно очищает. real escape у меня на Mac OS почему-то не заработал.
    Остальные виды запросов в плане есть, но пока до них руки не доходят.

    > У тебя там дыра уязвимости с 628 строки, любой суй не хочу.

    А ну ка давай, Вася узкопленочный ;)
     
  13. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    1.130
    Симпатии:
    235
    Адрес:
    Татарстан
    ключевое слово - вроде...
    надо было просто разобраться почему у тебя на Маке чето не работает...

    а вообще - какие-то тесты делал? ну на производительность ... типа быстрее ли стало итд?
     
  14. MouseZver

    MouseZver Старожил

    С нами с:
    1 апр 2013
    Сообщения:
    4.766
    Симпатии:
    769
    Адрес:
    Лень
    Ему пишут что там говнокод, а школьник язвит, цирк...
    --- Добавлено ---
    Есть акуительные инструменты prepare запросов.
     
  15. xShiftx

    xShiftx Новичок

    С нами с:
    27 май 2018
    Сообщения:
    23
    Симпатии:
    0
    Быстрее точно, человек знающий пишет, что она лучше.
    --- Добавлено ---
    Но конкретно вы даже не попытались.
     
  16. MouseZver

    MouseZver Старожил

    С нами с:
    1 апр 2013
    Сообщения:
    4.766
    Симпатии:
    769
    Адрес:
    Лень
    PHP:
    1.     public static function escape( $string ) {
    2.         return htmlspecialchars(addslashes(preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $string)));
    3.     }
    ага... поэтому:
    [​IMG]

    Попов учит как правильно говнокодить...

    [​IMG]
    вы не можете воспринять критику и осознать того, что вы создали дерьмовый софт со знающим пришельцем криворуким, ставит конкретный итог, что нет смысла дальше тратить время.
     
    #16 MouseZver, 12 окт 2018
    Последнее редактирование: 12 окт 2018
  17. xShiftx

    xShiftx Новичок

    С нами с:
    27 май 2018
    Сообщения:
    23
    Симпатии:
    0
    Дибил, ты укол галоперидола пропустил видимо.
     
  18. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    8.788
    Симпатии:
    610
    Адрес:
    из России с любовью
    Успокойтесь горячие парни. @xShiftx в твой предыдущий заход на форум ты тоже как-то быстро перешёл на крик. Проанализируй это. Может быть ты не всегда прав, а? :)

    По теме: я считаю тебе не стоит переносить файловый кеш на мемкешед. Принципиально это ничего не изменит. Возможно ты выиграешь несколько миллисекунд, возможно нет. Главный вопрос: зачем.
    Кеш должен быть оправдан. Когда тупо кешировано просто ВСЁ, это выглядит как маскировка проблем, костыль. Когда-то давно ты обнаружил провал в быстродействии и вместо локализации проблемы, потратил N человекодней на тотальное кеширование. Теперь это работает как @ для игнорирования ошибок. Типа, не вижу значит ничего не было!

    Удачи тебе в твоём безнадежном деле.
     
  19. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    8.788
    Симпатии:
    610
    Адрес:
    из России с любовью
    Не поверишь, но сам MySQL работает примерно так. Только умнее.
    Если ты два раза подряд выполнишь один и тот же SELECT, то творой раз он выполнится быстрее, потому что данные закешировались. Но если хотябы одна из участвующих в нём таблиц изменилась, то кеш для этого SELECT сбрасывается. Ну и, конечно, доступный объем ОЗУ и временной области на диске влияют на результативность кеша. Дай больше памяти серверу, он будет работать быстрее — в среднем запрос будет с большей вероятностью выполнен с помощью кеша.
    Если ты используешь один сервер на PHP, БД и memcached/redis, они будут красть память друг у друга :)

    Если есть отдельный сервак под кеш и несколько веб-серверов с балансировщиком нагрузки, тогда общий memcache(d) будет эффективен. Эффективнее чем локальный файловый кеш. Но, мне кажется, это не твой уровень задач.