1

我需要一次发送大量数据。但是 socket_write 只发送了其中的一部分。该函数和 $buffer 变量是正确的:

socket_write($socket, $buffer, strlen($buffer));

也许可以自定义缓冲区的限制或其他什么?

在http://php.net/manual/en/function.socket-write.php上有很多关于这个问题的解决方案,但它们都将缓冲区分开以逐部分发送。

4

1 回答 1

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

于 2013-08-22T07:21:42.677 回答