与远程服务器的卷曲连接有时会超时,但是当我执行tcpdump时,它表明即使curl请求已超时,服务器实际上仍在响应。这是TCP行为吗?下面是一个示例服务器端php代码,用于模拟行为,文件名为test.php,并通过PHP-FPM部署在Nginx上。
<?php
sleep(10);
echo "Hello World";
下面是一个5秒超时的卷曲请求。
curl -m 5'http:// server_ip:port / test.php'
下面是一个示例客户端脚本,可以代替上面的
<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://server_ip:port/test.php');
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
if (curl_errno($curl) > 0)
{
echo curl_error($curl), curl_errno($curl), PHP_EOL;
}
else
{
echo $response, PHP_EOL;
}
curl_close($curl);
tcpdump -w timeout_1.pcap -s0 -v -tttt -i eth0主机
tcpdump已在客户端计算机上获取。