За последние 24 часа нас посетили 15797 программистов и 1666 роботов. Сейчас ищет 871 программист ...

Что делать - кэширование страницы

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

  1. lemonl

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

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Здравствуйте,

    Подскажите что делать в такой ситуации и как решить такую проблему?

    1. Есть сайт-страница на SSD хостинге index.php
    2. Есть приложение которое каждую секунду посылает запросы POST на index.php?somed=data где в итоге данные сохраняются в БД - MYSQL
    3. Есть еще одно приложение(клиент) которое каждую секунду посылает запросы GET на index.php, а она в свою очередь обращается к БД - MYSQL и тянет данные.

    Мой хостинг провайдер говорит что такая схема выдает очень большую нагрузку и это только по одному IP:

    Количество запросов Apache: 946478
    Количество запросов NGINX: 946604
    CPU, %: 16,0041

    А если таких IP будет 1000 и более, то все ляжет.

    Как можно оптимизировать такой процесс что бы все работало ?
    Каким образом использовать кэширование страницы ?
    Нужно ли для этого процеса облако и поможет ли оно ?
     
  2. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    1. в п2 данные с каждого IP отсылаются свои или все IP генерят одни и теже данные?
    2. п3 по каждому запросу всем отдает одни и теже данные или каждому свое отдает?
    3. Как часто реально нужно обновлять данные? может достаточно раз в 5 секунд например?
     
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Можно. Для этого придумали вебсокеты
    А на счет хостинга. 21 век на дворе. Сними впн на do
     
  4. lemonl

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

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    1. Данные отсылаются мои и с моего ІP
    2. по каждому запросу всем отдает одни и теже данные
    3. Нужно как можно чаще.
    --- Добавлено ---
    Спасибо лишь бы это помогло впн сниму )) А есть ли у вас пример как использовать вебсокеты для этого ?
     
  5. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Грубо говоря все чаты работают на вебсокетах. Одно постоянное соединения которое при наступлении определенного события отправляет или запрашивает данные.
    Вот библиотека на php http://socketo.me/
    Но лучше на node
     
  6. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    отсылать с клиента можно по прежнему через POST имхо...

    а вот отсылать клиентам с сервера уже надо через сокеты, это в разы снизит нагрузку..
    один запрос сделали и всем кто слушает сокет разослали..

    тут у нас обсуждался сокет сервер Centrifugo - там даже пример есть)

    https://php.ru/forum/threads/centrifugo-dlja-php.68951/#post-557210
    https://php.ru/forum/threads/sokety.66982/#post-543202
     
  7. lemonl

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

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    А что скажете насчет ORM
     
  8. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Если хочешь снизить нагрузку на БД. Есть редис мемкешед и т.д.
     
  9. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    как правило такие решения немного добавляют запросов на каждое выполнение скрипта))
     
  10. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Часто бывает очень удобно. Есть мнение, что лучше проявляет на бекэнде, а на нагруженном фронте замедляет. К топику никакого отношения не имеет :)