pack 把字符、数字转为二进制流
unpack 解析二进制流
注意:对64位整数的处理是5.6.3才有的
socket服务器端写法请自行查阅。
客户端通常所用方法是 socket_create、socket_connect、socket_send、socket_recv、socket_close。
socket_recv和socket_read的区别请自行查阅。
说下socket_recv的返回值:
查源码发现,Linux的recv返回-1时socket_recv返回false,其它情况是将recv的返回值原样返回。
socket_recv返回0表示socket连接关闭了,即使你此时还可以var_dump($socket);//$socket是你的socket连接。
遇到的问题:netstat查看发现socket_recv返回0上tcp连接状态是CLOSE_WAIT,意思是对方主动关闭了。
因为我处理不过来对方发送的二进制数据,所以对方主动关闭了。
优化了mysql的参数set global innodb_flush_log_at_trx_commit=0;
关于php的socket超时设置,参考:
socket_set_option
socket_get_option