Экспресс отбрасывает соединение через 2 минуты

У меня есть PHP-скрипт, который подключается к Express (Node) под управлением setInterval,
Доступ к нему осуществляется через cUrl, поэтому он будет выглядеть примерно так:

$status = curl(http://example.com/status?id=xyz);
$status = json_decode(status, true);
if ($status[success] == true) {
//Do stuff here
}

Экспресс принимает запрос следующим образом:

app.get('/status/', function (req, res) {
var id = req.query['id'];
var statusInterval = setInterval(getStatus, 30 * 1000)
var statusTimeout = setTimeout(function() { //Clears Interval after 15m
clearInterval(statusInterval)
}, 15 * 60 * 1000);
});

однако через 2 минуты соединение случайно падает и else выполняется
настройка max_execution_time в PHP.ini до 600 (10 минут) не помогли, и не помогли CURLOPT_TIMEOUT или же CURLOPT_CONNECTTIMEOUT,

1

Решение

Оказывается, то, что предложил Ив, было правильным — хотя оно и не было должным образом упомянуто ранее в документах, есть экспресс-тайм-аут, установленный экспрессом, который закрывает соединения через 120 секунд, через setTimeout,

Чтобы предотвратить это, просто аннулируйте тайм-аут, добавив

res.connection.setTimeout(0);

к вашей функции.

Проблема описана — более подробно — на https://contourline.wordpress.com/2011/03/30/preventing-server-timeout-in-node-js/

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector