6

Commit: https://github.com/swoole/swoole-src/pull/3708/files

4.5.5 正在开发中,尚未发布版本

在之前的版本中,底层提供了connect_timelast_time两项时间信息,单位为秒,表示:

  • 连接到服务器的时间
  • 最后一次接收数据的时间

在非常复杂实际的项目中,这两项信息是远远不能满足需求的,在最新的版本中我们进行了优化。

时间精度调整

底层的时间全部改为使用 double 类型,精确到了微秒,包括:建立连接与数据接收、投递、数据。

增加发送和投递时间

Server::getClientInfo() 方法的返回值中增加了3个新的时间字段,精度为微秒:

  • last_recv_time:最近一次接收数据的时间
  • last_dispatch_time:最近一次投递数据的时间,当触发onReceive回调时,读取此信息可以得到,当前的$datamaster进程是什么时间dispatch的,通过判断投递时间和当前时间的差值,可以得到任务在管道中等待的耗时
  • last_send_time:最近一次发送到内核Socket缓存区的时间,通过此时间可以判断出客户端是否可以正常接收数据包,是否存在接收延时

通过更精确的时间数据,可以实现更细粒度的通信管理。


韩天峰
7.9k 声望11.1k 粉丝

Swoole 开源项目创始人