我有一个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_TIMEOUT
或CURLOPT_CONNECTTIMEOUT
也没有帮助。
答案 0 :(得分:1)
事实证明Yves建议的内容是正确的 - 尽管之前的文档中没有正确提及,但是通过快递设置了一个超时设置,在120秒之后关闭连接setTimeout
。
为了防止这种情况,只需添加
即可使超时无效res.connection.setTimeout(0);
到你的功能。
在https://contourline.wordpress.com/2011/03/30/preventing-server-timeout-in-node-js/
上以更详细的方式描述了该问题