heartbeat_idle_time

与heartbeat_check_interval配合使用。表示连接最大允许空闲的时间。如

array(
    'heartbeat_idle_time' => 600,
    'heartbeat_check_interval' => 60,
);
  • 表示每60秒遍历一次,一个连接如果600秒内未向服务器发送任何数据,此连接将被强制关闭
  • 启用heartbeat_idle_time后,服务器并不会主动向客户端发送数据包
  • 如果只设置了heartbeat_idle_time未设置heartbeat_check_interval底层将不会创建心跳检测线程,PHP代码中可以调用heartbeat方法手工处理超时的连接


  • Eric Wei

    $serv->set( array( 'worker_num' => 4, // worker进程数,4个进程,设置为CPU的1-4倍最合理 'reactor' => 4, // reactor线程数,reactor_num一般为CPU核数的1-4倍 'daemonize' => false, // 后台运行 'heartbeat_idle_time' => 10, // 300没有心跳时则断开 'heartbeat_check_interval' => 5, // 120秒遍历一次 'log_file' => '/tmp/swoole.log', ) );

    测试了,客户端边上后许久不活动也不会断开,是我的配置不对吗?

  • 如水年华

    你这个设置是5秒遍历一次,10秒断开链接,你的配置明显错误

  • 吾爱

    心跳检测配置,在多端口模式下只能配置在主server上

  • Duang

    这个有设置默认值吗?

  • バ 小丑男°乄°    ?

    'worker_num' => 2, 'task_worker_num' => 4, 'daemonize' => true, 'open_eof_check' => true, //打开EOF检测 'package_eof' => '##', //设置EOF 'open_eof_split' => true, 'heartbeat_idle_time' => 600, 'heartbeat_check_interval' => 60, 设置了以后,不管客户端有没有数据都是10分钟断开了,不知道为什么