gpt4 book ai didi

php - 收到数据后关闭 HTTP 连接

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:12:27 25 4
gpt4 key购买 nike

我正在使用 fsockopen 和 fwrite 发送和接收数据。我的应用程序收到了正确的响应,但似乎要等到某种超时才能继续。我怀疑在收到响应后我没有正确关闭连接,这解释了等待。有人可以看一下我的代码吗?

private static function Send($URL, $Data) {
$server = parse_url($URL, PHP_URL_HOST);
$port = parse_url($URL, PHP_URL_PORT);

// If the parsing the port information fails, we will assume it's on a default port.
// As such, we'll set the port in the switch below.
if($port == null) {
switch(parse_url($URL, PHP_URL_SCHEME)) {
case "HTTP":
$port = 80;
break;
case "HTTPS":
$port = 443;
break;

}
}

// Check if we are using a proxy (debug configuration typically).
if(\HTTP\HTTPRequests::ProxyEnabled) {
$server = \HTTP\HTTPRequests::ProxyServer;
$port = \HTTP\HTTPRequests::ProxyPort;
}

// Open a connection to the server.
$connection = fsockopen($server, $port, $errno, $errstr);
if (!$connection) {
die("OMG Ponies!");
}

fwrite($connection, $Data);

$response = "";
while (!feof($connection)) {
$response .= fgets($connection);
}
fclose($connection);

return $response;
}

最佳答案

问题出在这一行:

while (!feof($connection)) {

套接字是流;除非对方关闭连接,feof 永远不会返回true,您的脚本最终会超时。

为了执行有序关闭,双方都必须关闭他们的连接端; 其中一个可以作为对另一个的回应,但很明显,如果两个都在等待另一个先关闭,那么就没有人会这样做。

对端的程序是不是输出了东西就关闭了连接?好像不是。

关于php - 收到数据后关闭 HTTP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com