【问题标题】:PHP curl timeout from node.js HTTP server来自node.js HTTP服务器的PHP curl超时
【发布时间】:2013-12-04 05:04:42
【问题描述】:

我有一个简单的 Node.js HTTP 服务器正在运行(以下代码),我试图立即响应任何请求,然后异步处理请求。

var http = require('http');
var url = require('url');
var querystring = require('querystring');
http.createServer(function parseRequest(request, response){
    // Responding without any delay
    response.end();
    var query = url.parse(request.url).query;
    var param1 = querystring.parse(query)["param1"];
    var param2 = querystring.parse(query)["param2"];
    console.log("Param1: " + param1 + " and param2: " + param2);
}).listen(8888);
console.log("HTTP server started on port 8888");

我有另一个 PHP 脚本(以下代码)正在向 HTTP 服务器发送一个 Curl GET 请求。我以毫秒为单位指定 curl 连接超时

<?php
$url = "http://127.0.0.1:8888?param1=value1&param2=value2";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT_MS, 1000);
$start_time = microtime();
$response = curl_exec($curl);
$stop_time = microtime();
if(curl_errno($curl) != 0)
    echo "Curl error " . curl_error($curl) . "\n";
curl_close($curl);
echo "Started at " . $start_time . " and stopped at " . $stop_time . "\n";
?>

请注意,我为 curl 设置了 1000 毫秒作为连接超时时间,这工作正常。我从我的 PHP 脚本中收到如下消息。

起始于 0.57268300 1386132518 终止于 0.58577100 1386132518

但是当我给出一个小于 1000(甚至是 999)的值时,curl 连接超时并且我收到以下消息

Curl 错误超时

起始于 0.55238500 1386131950 终止于 0.55245800 1386131950

我在这里缺少任何设置吗?我正在使用 php 5.4.6curl 7.27.0

【问题讨论】:

    标签: php node.js curl http-get


    【解决方案1】:

    在查看有关此超时值的 PHP 文档时,您可能会遇到本地系统的限制。 docs 状态:

    如果构建 libcurl 以使用标准系统名称解析器,则连接的该部分仍将使用整秒解析超时,允许的最小超时为一秒。

    如果将该值设置为低于允许超时的最小值,您可能会导致系统自动触发超时。

    更新:看起来previous question 是同一个问题。为了为此设置低于 1000 毫秒的值,您需要:

    你必须自己编译libcurl,使用--enable-threaded-resolver,然后针对它编译php的curl扩展

    【讨论】:

    • 谢谢。使用 --enable-threaded-resolver 从源代码构建 libcurl 解决了这个问题。对于发布重复的问题,我深表歉意。
    猜你喜欢
    • 2012-08-10
    • 2015-12-20
    • 2017-08-27
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 2013-04-11
    相关资源
    最近更新 更多