Swoole支持哪些网络协议?
- 内容介绍
- 文章标签
- 相关推荐
本文共计678个文字,预计阅读时间需要3分钟。
相关文章内容摘要:
在实际应用中,希望在服务器上能够一次接收一段完整的数据,不多也不少。
传统的TCP服务器中,往往需要由程序员维护一个缓存区,先将读取到数据写入缓存区,然后再通过预先设定好的协议内容来区分一段完整数据的开头、结尾和长度,并将一段完整的数据交给逻辑部分处理,这就是自定义协议的功能。
在Swoole中已经在底层实现了一个数据缓存区,并内置了几种常用的协议类型,并直接在底层做好了数据的拆分,以保证在onReceive回调函数中,一定能够收到一个或数个完整的数据段。
数据缓存区的大小可以通过配置pakcage_max_length来控制。
$configs = []; $configs["package_max_length"] = 8192; $server->set($configs);
swoole目前支持两种通讯协议:EOF结束符协议、固定包头加包体协议
package_max_length
package_max_length用于设置最大数据包尺寸,当开启open_length_check或open_eof_check或open_http_protocol等协议解析后,Swoole底层会进程数据包拼接,此时在数据包未收取完整时,所有数据都将保存在内存中。
所以需要设置package_max_length一个数据包最大允许占用的内存尺寸。
如果同时有1万个TCP连接在发送数据,每个数据包2MB,在最极端的情况下会占用20GB的内存空间。所以此参数不宜设置过大,否则会占用很大的内存。
本文共计678个文字,预计阅读时间需要3分钟。
相关文章内容摘要:
在实际应用中,希望在服务器上能够一次接收一段完整的数据,不多也不少。
传统的TCP服务器中,往往需要由程序员维护一个缓存区,先将读取到数据写入缓存区,然后再通过预先设定好的协议内容来区分一段完整数据的开头、结尾和长度,并将一段完整的数据交给逻辑部分处理,这就是自定义协议的功能。
在Swoole中已经在底层实现了一个数据缓存区,并内置了几种常用的协议类型,并直接在底层做好了数据的拆分,以保证在onReceive回调函数中,一定能够收到一个或数个完整的数据段。
数据缓存区的大小可以通过配置pakcage_max_length来控制。
$configs = []; $configs["package_max_length"] = 8192; $server->set($configs);
swoole目前支持两种通讯协议:EOF结束符协议、固定包头加包体协议
package_max_length
package_max_length用于设置最大数据包尺寸,当开启open_length_check或open_eof_check或open_http_protocol等协议解析后,Swoole底层会进程数据包拼接,此时在数据包未收取完整时,所有数据都将保存在内存中。
所以需要设置package_max_length一个数据包最大允许占用的内存尺寸。
如果同时有1万个TCP连接在发送数据,每个数据包2MB,在最极端的情况下会占用20GB的内存空间。所以此参数不宜设置过大,否则会占用很大的内存。

