19 / 3 / 1
Регистрация: 25.09.2019
Сообщений: 56

PHP Телеграм бот? при обращении к файлу php бота одним юзером, другой ждет

09.03.2023, 22:14. Показов 3219. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, Всем.

Подскажите куда копать.

Создал бот, на php 7.4
Без доп. библиотек.

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

Один юзер отправляет команду.
Другой отправляет команду, но к нему приходит ответ, только после того как у первого закончится реализация команды.


Бот:
После отправки ему команды, по Curl парсит сторонний сайт, на том сайте долгая загрузка примерно 1 минуту.
Реализация простая:
PHP
1
2
3
foreach ($proverka_arr as $arr_pro){
$my_site = file_get_contents('https://мойсайт?num_gan='. $arr_pro .'&chat_id='. $chat_id);
}
На странице куда ушел GET запрос по CURL парсится сайт и уже с того файла идет отправка данных в телеграмм.
Цикл, потому что может быть несколько данных.

Так вот второй ждет эту минуту, даже не реагирует на простые команды, например /help где ответ просто текст.

Как создать разные потоки для разных юзером, и разве это не должно создаваться автоматом?


Начало бота если потребуется:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
header('Content-Type: text/html; charset=utf-8'); // на всякий случай досообщим PHP, что все в кодировке UTF-8
 
error_reporting(0);
 
/* файл настроек */
include('configg.php');
 
// пытаемся подключиться к БД
$link = mysqli_connect($host, $user, $password, $database) 
    or die("Ошибка " . mysqli_error($link)); 
    
// устанавливаем кодировку соеденения с БД
mysqli_set_charset($link, "utf8");
$charset = mysqli_character_set_name($link);
 
$site_dir = dirname(dirname(__FILE__)).'/asbot/'; // корень сайта
$bot_token = '6чтото72uасd7GcoCкак-тоwyAo8'; // токен вашего бота
$data = file_get_contents('php://input'); // весь ввод перенаправляем в $data
$data = json_decode($data, true); // декодируем json-закодированные-текстовые данные в PHP-массив
 
if (!empty($data['message']['text'])) {
    $chat_id = $data['message']['from']['id'];
    $user_name = $data['message']['from']['username'];
    $first_name = $data['message']['from']['first_name'];
    $last_name = $data['message']['from']['last_name'];
    $Users_who = $first_name. ' '. $last_name;
    $text = trim($data['message']['text']);
    $text_array = explode(" ", $text);
Добавлено через 2 часа 19 минут
Не знаю правильно ли, но я просто вместо file_get_contents, использовал также CURL, и время ожидания поставил 400 млс.
Т.е. отправил и убил, вроде все заработало, но насколько это правильно...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2023, 22:14
Ответы с готовыми решениями:

Не работает телеграм бот при работы с mysql php
У меня почему то не работает телеграм бот при добавление, или поиска пользователя в mysql php. База данных подключается корректно. Вот...

Исполнение PHP скрипта при обращении к файлу с другим расширением
Здравствуйте, подскажите как сделать при обращении к http://www.site.com/file.dmm file.dmm запускался как php и выдавал информацию

PHP Бота телеграм
Ребята нужна помощь Скрипт установлен работает, ну не работает пару функций бота нужно пересмотреть исходняк дам весь доступ к...

42
Эксперт PHP
 Аватар для liris
5127 / 1086 / 160
Регистрация: 16.01.2023
Сообщений: 2,681
15.03.2023, 18:09
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от HotReboot Посмотреть сообщение
У вас время не будут различаться на 10 и более секунд.
Запустил четыре вкладки практически одновременно (ну может около секунды между запросами). Результат во вложении. Код скрипта:

PHP
1
2
3
echo "Скрипт начал работу: " . date("H:i:s") . "<br>";
sleep(10);
echo "Скрипт закончил работу: " . date("H:i:s") . "<br>";
Тестировал на классическом хостинге для веб-сайтов (spaceweb, платный).
Миниатюры
PHP Телеграм бот? при обращении к файлу php бота одним юзером, другой ждет  
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
15.03.2023, 18:16
CHEr159, У вас настройки.
0
19 / 3 / 1
Регистрация: 25.09.2019
Сообщений: 56
15.03.2023, 18:18  [ТС]
liris, Потому что логика у сервера такая, что с одно подключения один поток, в другом режиме браузера, передаются другие параметры на сервер, или ip или агент или еще чего, но с одно клиента только один поток,

Представьте себе, если бы ваши посетители сайта в размере 1000 Уников, начали плодить потоки на каждый запрос, у Вас бы сервер умер через 5 секунд,
0
19 / 3 / 1
Регистрация: 25.09.2019
Сообщений: 56
15.03.2023, 18:21  [ТС]
HotReboot, Ну и спрашивается, что у вас с настройками сервера?
Миниатюры
PHP Телеграм бот? при обращении к файлу php бота одним юзером, другой ждет  
0
19 / 3 / 1
Регистрация: 25.09.2019
Сообщений: 56
15.03.2023, 18:23  [ТС]
HotReboot, Может Вы обращаетесь к локальному серверу? а не к внешнему? Или из-за того что Вы ввели в разных окнах, а не в разных вкладках
0
Эксперт PHP
 Аватар для liris
5127 / 1086 / 160
Регистрация: 16.01.2023
Сообщений: 2,681
15.03.2023, 18:25
Цитата Сообщение от HotReboot Посмотреть сообщение
CHEr159, У вас настройки.
По вашей же ссылке такое же поведение. Взгляните на скриншот.
Миниатюры
PHP Телеграм бот? при обращении к файлу php бота одним юзером, другой ждет  
0
Эксперт PHP
 Аватар для liris
5127 / 1086 / 160
Регистрация: 16.01.2023
Сообщений: 2,681
15.03.2023, 18:26
Последний скрипт отрабатывает быстрее (и у меня, и у вас), но все равно после всех остальных.
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
15.03.2023, 18:27
CHEr159, Я не знаю, что у вас вообще.
0
19 / 3 / 1
Регистрация: 25.09.2019
Сообщений: 56
15.03.2023, 18:31  [ТС]
HotReboot, Я еще раз говорю в одном браузере выполните а не в двух
Две вкладки в одном браузере!
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
15.03.2023, 18:34
CHEr159, Можете посмотреть.
Правда у меня nginx+apache. nginx обработчик php.
0
19 / 3 / 1
Регистрация: 25.09.2019
Сообщений: 56
15.03.2023, 18:35  [ТС]
Ну я не знаю, как у Вас такое получается, но у меня и у других пользователей, на вашей же ссылке, отрабатывает по очереди.
Я про видео...
0
19 / 3 / 1
Регистрация: 25.09.2019
Сообщений: 56
15.03.2023, 18:43  [ТС]
И даже я щас смотрю на ваш скрин, у вас точно так же, сначала один заканчивает другой начинает
Миниатюры
PHP Телеграм бот? при обращении к файлу php бота одним юзером, другой ждет  
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
15.03.2023, 18:49
CHEr159, То не мой скрин. Вот curl из консоли
0
19 / 3 / 1
Регистрация: 25.09.2019
Сообщений: 56
15.03.2023, 18:53  [ТС]
Да извиняюсь, поплыл уже в сообщениях,
Но опять же, у меня и у другого Юзера, одинаковый сценарий с Вашим сервером.
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
15.03.2023, 18:57
CHEr159, Но и телеграм сервер не веббраузер. В общем не знаю, что у вас. Сделайте проще - отдельный файл с file_get_contents и вызывайте его по exec.
0
Эксперт PHP
 Аватар для liris
5127 / 1086 / 160
Регистрация: 16.01.2023
Сообщений: 2,681
15.03.2023, 19:00
HotReboot, Подтверждаю.
curl'ом дернул - четыре потока отработали параллельно.

Однако в хроме у меня стабильно воспроизводится проблема и на вашем сервере, и на моем.
Я подумал, что может быть браузер сам придерживает выполнение в рамках одной сессии?

Я не хочу ставить firefox ради этого, у меня только хромообразные установлены.
0
19 / 3 / 1
Регистрация: 25.09.2019
Сообщений: 56
15.03.2023, 19:01  [ТС]
Цитата Сообщение от HotReboot Посмотреть сообщение
CHEr159, Но и телеграм сервер не веббраузер. В общем не знаю, что у вас. Сделайте проще - отдельный файл с file_get_contents и вызывайте его по exec.
Да то же самое, http запрос на файл.

Я сделал через

PHP
1
fastcgi_finish_request();
0
Эксперт PHP
 Аватар для liris
5127 / 1086 / 160
Регистрация: 16.01.2023
Сообщений: 2,681
15.03.2023, 19:03
Цитата Сообщение от liris Посмотреть сообщение
Я подумал, что может быть браузер сам придерживает выполнение в рамках одной сессии?
Похоже эта версия имеет право на жизнь. Я заглянул в access.log своего сервера (на котором тестировал). К веб-серверу обращения идут с 10-секундной задержкой. Похоже что клиент сам не посылает следующий запрос, пока не получит ответ на предыдущий (в рамках одной сессии, например).

Выдержка из логов:

Code
1
2
3
4
*** - - [15/Mar/2023:18:05:16 +0300] "GET /test10sec.php HTTP/1.1" 200 106 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" 10
*** - - [15/Mar/2023:18:05:26 +0300] "GET /test10sec.php HTTP/1.1" 200 106 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" 10
*** - - [15/Mar/2023:18:05:36 +0300] "GET /test10sec.php HTTP/1.1" 200 106 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" 10
*** - - [15/Mar/2023:18:05:41 +0300] "GET /test10sec.php HTTP/1.1" 200 106 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" 10
Миниатюры
PHP Телеграм бот? при обращении к файлу php бота одним юзером, другой ждет  
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
15.03.2023, 19:04
CHEr159, Что значит "тоже самое"? Он запускает вообще php_cli не имеющий к вебсерверу никакого отношения.
0
19 / 3 / 1
Регистрация: 25.09.2019
Сообщений: 56
15.03.2023, 19:51  [ТС]
Цитата Сообщение от HotReboot Посмотреть сообщение
CHEr159, Что значит "тоже самое"? Он запускает вообще php_cli не имеющий к вебсерверу никакого отношения.
Как у вас сторонний сервер (юзер) может вызывать PHP_CLI? не имея доступа на ваш сервер?
Если телеграмм сервер с вашим сервером общается по http c POST запросом?

Добавлено через 36 минут
liris, Возможно и сессия, но это говорит только о том, что все серверы ведут себя одинаковы в рамках одного клиента.
Два браузера как минимум передают разные заголовки, что уже разные сессии.

Не может быть, что уже 4 сервера с однотипным скриптом, ведут себя одинаково. "Но так не должно быть."

Добавлено через 1 минуту
И тем более не было бы статей, что бот должен быть асинхронным, иначе он выполняет все в один поток.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2023, 19:51
Помогаю со студенческими работами здесь

Телеграм бот на PHP
Привет всем. Недавно зарегистрировался в Телеграме и решил попробовать написать своего бота. Выбрал ПХП И библиотеку Telegram Bot API...

Телеграм бот на PHP
PLS HELP!=) Ситуация такая купил хостинг и доменное имя, оформил SSL сертификат, зарегистрировал бота у @BotFather повесил вебхук на...

Как запустить телеграм бота на php
Есть опыт создания бота на node js, хочу научиться делать ботов на php. Нахожу адекватные примеры(например,...

Телеграм бот на php, добавление второй галереи
Всем привет. Телеграм бот на php. Бот простой пару кнопок с текстом и галерея с инлайн кнопками. Работа стандартная через запрос фото...

Как правильно прописать ник пользователя в ответном сообщении от бота Телеграм PHP
Всем привет. Как решить проблему, когда в теле ответного сообщения присутствует ник с нижним подчеркиванием и из-за этого ответ даже не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru