新整个webman,放到Linux上,写个简单的方法:
public function index(Request $request)
{
return response('hello webman');
}
windows本地,写个for循环:
for ($i = 0; $i < 10000; $i++) {
echo '循环:' . $i . '=>' . request_get($url) . PHP_EOL;
}
request_get方法:
function request_get(string $url, int $timeout = 10)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$rs = curl_exec($ch);
if (curl_errno($ch)) {
$err_msg = curl_error($ch);
curl_close($ch);
return json_encode(['code' => 50, 'msg' => $err_msg]);
} else {
curl_close($ch);
return $rs;
}
}
结果后期提示:
Failed to connect to 172.16.0.26 port 8787: Address already in use
相关图片:
这是什么原因呢?还请解惑。
curl是短连接,每次请求会占用本地一个端口,请求完毕后这个端口不会立刻释放。本地端口有限,当本地端口被快速用完就会报这个 Address already in use 错误了。
curl用长连接,也就是不主动curl_close,这样就不会不断的消耗本地端口,应该就不会报错了,request_get改成
非常感谢,按照你的建议,的确不会出现这个问题了。谢谢。