Таймер PHP heroku не работает из-за тайм-аута 30 секунд - PullRequest
0 голосов
/ 01 января 2019

В настоящее время у меня есть таймер для бота-телеграммы, который работает на моем собственном терминале, но при развертывании на 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 является правильным решением...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...