Php tcp消息不完整

Php tcp消息不完整,php,linux,tcp,centos,Php,Linux,Tcp,Centos,我正在使用HTML5WebSockets,dev.w3.org/html5/websockets/,以及php套接字函数php.net/manual/en/ref.sockets.php。我的问题是,使用WebSocket从客户端发送到服务器的消息被截断到最大1449字节。当我将net.ipv4.tcp_时间戳设置为0时,会收到几个额外的字节。我使用的是socket_recv。我确实尝试在socket_recv上循环,但在第一次调用socket_recv后,会发出以下警告: Warning: s

我正在使用HTML5WebSockets,dev.w3.org/html5/websockets/,以及php套接字函数php.net/manual/en/ref.sockets.php。我的问题是,使用WebSocket从客户端发送到服务器的消息被截断到最大1449字节。当我将net.ipv4.tcp_时间戳设置为0时,会收到几个额外的字节。我使用的是socket_recv。我确实尝试在socket_recv上循环,但在第一次调用socket_recv后,会发出以下警告:

Warning: socket_recv(): unable to read from socket [11]: Resource temporarily unavailable in [file] on line 94
注:

  • 当我将socket_recv()与MSG_DONTWAIT一起使用时,会收到上述警告。e、 g.插座记录($socket,$data,10024,MSG_DONTWAIT)
  • 如果我只使用0,系统将阻塞。e、 g.插座(插座,$data,10024,0)
那么,为什么发送的消息会被截断

我的sysctl.conf:

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
net.ipv4.tcp_syncookies = 1
net.core.somaxconn = 900
net.ipv4.tcp_fin_timeout = 20
net.core.netdev_max_backlog = 2500


net.core.rmem_default = 262144
net.core.wmem_default = 262144

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.udp_rmem_min = 16384
net.ipv4.udp_wmem_min = 16384

net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.tcp_wmem = 8192 65536 16777216

net.ipv4.tcp_mem = 8388608 12582912 16777216
net.ipv4.udp_mem = 8388608 12582912 16777216

net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1 
net.ipv4.tcp_window_scaling = 1

事实证明,对于给定的套接字,我必须在每个
socket\u recv()
之后再次调用
socket\u select()