gpt4 book ai didi

php - PHP socket_recv()不会从服务器收到整个响应。

转载 作者:行者123 更新时间:2023-12-03 11:54:17 25 4
gpt4 key购买 nike

我正在尝试使用socket_recv接收HTTP响应。我在处理大于5000字节的响应时遇到了麻烦。它停止接收;不会抛出任何错误;尽管Content-Length明确表示响应远大于该值(25000字节),但它大约为7000字节。我做错了什么,还是PHP套接字通常不稳定?

这是代码的相关部分:

 while((socket_recv($this->socket, $buf, 1024, MSG_WAITALL)) > 0){
$this->fullResponse .= $buf;
}
if(!$this->fullResponse){
$errno = socket_last_error();
$errmsg = socket_strerror($errno);
echo $this->state = "{$errno} {$errmsg}";
return;
}

最佳答案

PHP套接字忽略Content-Length头,因为它们位于HTTP响应部分中,并且套接字在较低级别上工作。您是否在尝试获取HTTP资源?为此,我将使用cURL:http://php.net/manual/en/book.curl.php,或者如果您只需要获取文件,则执行以下操作:file_get_contents(“http://www。example.com/somefile.ext”),但要工作,allow_url_fopen必须为true。
我也从php.net上的socket_recv注释部分找到了这一点:
http://www.php.net/manual/de/function.socket-recv.php#47789

关于php - PHP socket_recv()不会从服务器收到整个响应。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16340857/

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