我需要一次发送大量数据。但是 socket_write 只发送了其中的一部分。该函数和 $buffer 变量是正确的:
socket_write($socket, $buffer, strlen($buffer));
也许可以自定义缓冲区的限制或其他什么?
在http://php.net/manual/en/function.socket-write.php上有很多关于这个问题的解决方案,但它们都将缓冲区分开以逐部分发送。
我需要一次发送大量数据。但是 socket_write 只发送了其中的一部分。该函数和 $buffer 变量是正确的:
socket_write($socket, $buffer, strlen($buffer));
也许可以自定义缓冲区的限制或其他什么?
在http://php.net/manual/en/function.socket-write.php上有很多关于这个问题的解决方案,但它们都将缓冲区分开以逐部分发送。
您应该尝试使用 SO_SNDBUF 选项设置发送缓冲区大小。这将允许 TCP 层的缓冲区保存更多数据。
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) socket_set_option($sock, SOL_SOCKET, SO_SNDBUF, 5000);
您可以使用 socket_get_option 查看套接字缓冲区的当前值: var_dump(socket_get_option($sock, SOL_SOCKET, SO_SNDBUF));
网址:http: //in3.php.net/manual/en/function.socket-set-option.php