За последние 24 часа нас посетили 38869 программистов и 7572 робота. Сейчас ищут 1756 программистов ...

Ускорение работы Telegram бота (webhook)

Тема в разделе "PHP для новичков", создана пользователем mmaxsmilet, 6 дек 2023.

  1. mmaxsmilet

    mmaxsmilet Новичок

    С нами с:
    6 дек 2023
    Сообщения:
    2
    Симпатии:
    0
    Доброе время суток

    Предыстроия: я собрал Telegram бота, закинул его на хостинг, подключил прием запросов через webhook. В самом боте использую подключение к БД через mysqli, а для отправки сообщений в Telegram использую file_get_contents. Первое время все работало довольно шустро, однако со временем работы у бота появился небольшей пинг при использовании. Нагрузка на сервер не возрастала, количество соединений к БД тоже. После чего я предположил что дело в последовательной обработке запросов Telegram (так как базе надо немножко подумать, а потом дать ответ, очередь начала накапливать это ожидание ответа). После чего мне пришла мысль про асинхронную обработку запросов

    Вопрос: как лучше реализовать асинхронную обработку? или же она мне не нужна и есть решения по лучше? подскажите как привольнее сделать или в какую сторону двигаться для ускорения ответов сервера. Заранее благодарю
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    Сначала все же выясни откуда задержка... и что в твоем понимании асинхронность обработки?
    ИМХО ... тормоза связаны с самим Телеграмом..... была такая же фигня
    как на нее повлиять - хз.... если только свой север поднимать телеговский
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.840
    Симпатии:
    1.338
    Адрес:
    Лень
    ибо нефиг в каждой команде у бота в теле функции или где-то там еще делать по 100500+ подключений mysqli

    2023-12-07_01-00-46.png
     
  4. mmaxsmilet

    mmaxsmilet Новичок

    С нами с:
    6 дек 2023
    Сообщения:
    2
    Симпатии:
    0
    Не могли бы подсказать какие то способы для этого? как и чем лучше протестировать?
    Тут я немного намудрил, закралась мысль что запросы с webhook(а) обрабатываются последовательно (и пока первый не обработан второй обрабатываться не начнет)
    Были похожие проблемы, прямо долгая задержка, решил данный вопрос взяв сервер гео Германии
    Такой фигней я не страдаю. Обычно подключаю 1 раз в начале, а когда нужно взаимодействовать с базой ссылаюсь на подключение с переменной
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    ведите лог... например типа
    13:55:45 - start script
    13:55:46 - connect mysql
    13:55:48 - start execute SQL
    13:56:48 - end execute SQL

    Тут станет понятно что затык в запросе....

    или например - послали команду боту 13:55:43 а в логах видите что начало исполнения скрипта сильно дальше по времени - это значит что-то с сервером тг