В настоящее время у меня есть таймер для бота-телеграммы, который работает на моем собственном терминале, но при развертывании на heroku он вызывает тайм-аут из-за того, что он превышает 30 секунд.Надеясь найти кого-нибудь, кто сможет решить эту проблему.
Я пытался настроить таймер на запуск ниже 30 секунд каждый раз, но, похоже, это сумма времени, затраченного на весь код, то есть я могу 't просто установите таймер на цикл while и запускайте каждые 29 секунд, чтобы предотвратить тайм-аут.Heroku: https://devcenter.heroku.com/articles/request-timeout
public function timer($time) {
echo "$time minutes countdown starts." . PHP_EOL;
// Save the date in future when the timer should stop
$endTime = time() + $time*60;
while(true) {
sleep($time*20);
$secondsRemaining = $endTime - time();
// echo 'Minutes: '.ceil($secondsRemaining/60).PHP_EOL;
if ($secondsRemaining <= 0) {
echo 'Finished'.PHP_EOL;
return true;
}
}
}
private function timedMessages($time, $msg) {
if($this->timer($time)) {
$this->sendMessage($msg);
// method to send telegram messages
}
}
$msg = "Start";
$this->sendMessage($msg);
$msg = "1st message";
$this->timedMessages(20, $msg);
$msg = "2nd message";
$this->timedMessages(20, $msg);
$msg = "3rd message";
$this->timedMessages(20, $msg);
Ожидаемый: Выполнить через 60 минут, и каждые 20 минут отправлять сообщение
Результаты: сообщение «Старт» отправляется каждые 30 секунд в качестве тайм-аутов heroku и перезапускаетсякод.«1-е сообщение» по-прежнему отправляется через 20 минут до
Если возможно, я надеюсь, что смогу найти способ запустить таймер с heroku, если кто-нибудь знает (я не думаю, что cronjobs является правильным решением...)