【发布时间】: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¶m2=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.6 和 curl 7.27.0。
【问题讨论】: