我需要一次性发送大量数据。但是socket_write只发送它的一部分。函数和$ buffer变量是正确的:
socket_write($socket, $buffer, strlen($buffer));
也许可以自定义缓冲区的限制或什么?
http://php.net/manual/en/function.socket-write.php在这个问题上有很多解决方案,但是它们都将缓冲区分开来逐个发送。
答案 0 :(得分:2)
您应该尝试使用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