2分钟后快速连接连接

时间:2017-09-26 12:23:46

标签: php express

我有一个PHP脚本连接到运行setInterval的Express(节点)。 这是通过cUrl访问的,所以它看起来像这样:

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

Express正在以下列方式提取请求:

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。 将PHP.ini中的max_execution_time设置为600(10分钟)没有帮助,CURLOPT_TIMEOUTCURLOPT_CONNECTTIMEOUT也没有帮助。

1 个答案:

答案 0 :(得分:1)

事实证明Yves建议的内容是正确的 - 尽管之前的文档中没有正确提及,但是通过快递设置了一个超时设置,在120秒之后关闭连接setTimeout

为了防止这种情况,只需添加

即可使超时无效
res.connection.setTimeout(0);

到你的功能。

https://contourline.wordpress.com/2011/03/30/preventing-server-timeout-in-node-js/

上以更详细的方式描述了该问题