定时器

GatewayWorker是基于Workerman开发的,Workerman定时器在GatewayWorker中也同样支持,用法与Wokerman的定时器用法相同。参见Workerman手册定时器

示例

  1. use Workerman\Lib\Timer;
  2. class Events
  3. {
  4. // 进程启动时设置个定时器。Events中支持onWorkerStart需要Gateway版本>=2.0.4
  5. public static function onWorkerStart()
  6. {
  7. Timer::add(10, function(){
  8. echo "timer\n";
  9. });
  10. }
  11. // 定时关闭未认证的连接
  12. public static function onConnect($client_id)
  13. {
  14. // 连接到来后,定时30秒关闭这个链接,需要30秒内发认证并删除定时器阻止关闭连接的执行
  15. $_SESSION['auth_timer_id'] = Timer::add(30, function($client_id){
  16. Gateway::closeClient($client_id);
  17. }, array($client_id), false);
  18. }
  19. // 认证的连接将定时器删除
  20. public static function onMessage($client_id, $msg)
  21. {
  22. $msg = json_decode($msg);
  23. switch($msg['type'])
  24. {
  25. case 'login':
  26. 略...
  27. // 认证成功,删除 30关闭连接定 的时器
  28. Timer::del($_SESSION['auth_timer_id']);
  29. break;
  30. }
  31. ............略
  32. }
  33. }