意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

Swoole提供Client类能做什么,有什么优点

来源:恒创科技 编辑:恒创科技编辑部
2024-01-09 21:14:59
关于“Swoole提供Client类能做什么,有什么优点”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。


Swoole提供Client类能做什么,有什么优点



PHP常用socket创建TCP连接,使用CURL创建HTTP连接,为了简化操作,Swoole提供了Client类用于实现客户端功能,并增加了异步非阻塞模式,让用户在客户端也能使用事件循环。

作为客户端使用,Swoole Client可以在FPM环境下或 Apache中使用,但不允许使用Async异步模式,只能使用同步非阻塞模式,异步非阻塞模式仅限CLI模式下使用。

Client提供了TCP/UDP socket的客户端的封装代码,使用时仅需new Swoole\Client。

Swoole的socket客户端对比PHP提供的stream族函数有什么优势呢?

stream函数存在超时设置的陷阱和Bug,一旦没有处理好将会导致服务器长时间阻塞。

stream和fread有8192长度限制,无法支持UDP大包。

swoole_client客户端支持waitall,在知道包长度的情况下可以一次取完不必循环获取。

swoole_client支持UDP的connect解决了UDP串包的问题

swoole_client是纯C的代码

swoole_client支持异步非阻塞回调

构造方法 constructor

Swoole的Client功能封装为一个swoole_client类,可通过new swoole_client来创建一个客户端实例。

原型

swoole_client->__construct(
  int $sock_type, 
  int $is_async = SWOOLEL_SOCK_SYNC, 
  string $key);

参数

参数1:int $sock_type

$sock_type 表示socket类型,可使用swoole提供的宏来指定类型。

SWOOLE_TCP 创建TCP Socket
SWOOLE_TCP6 创建IPv6 TCP Socket
SWOOLE_UDP 创建UDP Socket
SWOOLE_UDP6 创建IPv6 UDP Socket
SWOOLE_SSL 开启SSL加密
SWOOLE_KEEP 开启连接复用

其中SWOOLE_SSL与SWOOLE_KEEP不能单独使用,需要与前四个选项共同作用。

// 创建并开启SSL加密的TCP客户端
$client = new swoole_client(SWOOLE_TCP | SWOOLE_SSL);

到此这篇关于“Swoole提供Client类能做什么,有什么优点”的文章就介绍到这了,更多相关内容请搜索恒创科技以前的文章或继续浏览下面的相关文章,希望大家以后多多支持恒创科技!
上一篇: PHP如何利用Pipeline设计模式来实现中间件的 下一篇: 手机怎么远程登录云服务器?