Closed ghost closed 1 year ago
так и не решили проблему ?
А это не проблема и её не надо решать. Таймаут срабатывает не у библиотеки, а у API телеграм. Если PHP-FPM, то можно просто первой командой скрипту передать fastcgi_finish_request();
Например если:
$bot->command('test', function ($message) use ($bot)
{
$userid = $message->getChat()->getId();
fastcgi_finish_request();
sleep(300);
$bot->sendMessage($userid, "TEST");
});
то все отработает единожды
если mod_php (х.з. зачем), то стоит обратить внимание на буферизацию вывода: ob_start() ob_get_contents() ob_get_flush() ob_flush() ob_end_clean() ob_end_flush()
So fastcgi_finish_request is good solution if u have defined fastcgi_finish_request function, but if u not have it (its me) u can use this code to do same wihtout fastcgi_finish_request function:
$bot->command('test', function ($message) use ($bot)
{
$userid = $message->getChat()->getId();
http_response_code(200);
ignore_user_abort(true);
header("Content-Length: 0");
header("Connection: Close");
flush();
session_write_close();
sleep(300);
$bot->sendMessage($userid, "TEST");
});
Для воспроизведение проблемы можно использовать функцию
В таком случае после отправки команды /test телеграм начинает присылать event с одним и тем же update_id чем вызывает обработку функции снова и снова