onlineStatistics.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * 每分钟执行一次
  4. */
  5. if (substr(PHP_SAPI_NAME(), 0, 3) !== 'cli') {
  6. die("The program runs only in CLI mode!");
  7. }
  8. $timestamp = time();
  9. $sid =$lid =1;
  10. include_once dirname(__FILE__) . "/crontab.inc.php";
  11. include_once dirname(__FILE__) . "/../com.php";
  12. require_once dirname(__FILE__) . '/../vendor/autoload.php';
  13. set_time_limit(0);
  14. // G(小时,24 小时格式,没有前导零,0 到 23), i(有前导零的分钟数,00 到 59>)
  15. $time = date('Gi', $timestamp);
  16. $day = date("j", $timestamp); // 月份中的第几天,没有前导零(1到31)
  17. $week = date('w', $timestamp);//星期中的星期几 周日是0 周一是1 依次排下去
  18. $minute = date('i', $timestamp);
  19. define('CURRENT_TIMESTAMP', $timestamp);
  20. /*****统计在线在玩 Start*****/
  21. $onlineNum = oo::commonOprModel('recordonline')->getAliMonitor('onlineStatistics.php line:'.__LINE__);
  22. oo::commonOprModel('recordonline')->setOnlenCount(timeFuns::todaySecond(), $onlineNum);//每分钟在线用户统计
  23. if( $minute % 5 == 0 ){
  24. !IS_DEBUF && oo::commonOprModel('recordonline')->crazyRecord($timestamp, $onlineNum);
  25. }
  26. /*****统计Fox在线数*****/
  27. oo::commonOprModel('recordonline')->saveFoxRealTimeOnline($timestamp, $onlineNum);
  28. $warnConfig = [
  29. 400 => 3, // 3次超过400 报警
  30. 200 => 5, // 5次超过200 报警
  31. ];
  32. krsort($warnConfig);
  33. $date = date('Y-m-d H:i:s', CURRENT_TIMESTAMP);
  34. $inactiveNum = oo::commonOprModel('recordonline')->getAliMonitor('onlineStatistics.php line:'.__LINE__, 0, false);
  35. foreach ($warnConfig as $warnNum => $warnTimes){
  36. if($inactiveNum >= $warnNum){ // 非活跃连接数 大于 阈值
  37. $lastTimes = oo::commonOprRedis('statistics')->incr(okeys::inactiveWarnTimes($warnNum)); // 告警次数 +1
  38. if($lastTimes >= $warnTimes){// 告警次数 大于 阈值 发出推送 将告警次数清0
  39. oo::logs()->debug3(['msg' => "【警报】FOX {$date} :非活跃连接数连续 {$lastTimes} 次超过 {$inactiveNum} ."], 'warning.log');
  40. oo::commonOprModel('Enwechat')->send("【警报】FOX {$date} :非活跃连接数连续 {$lastTimes} 次超过 {$inactiveNum} .",[],[],1);
  41. oo::commonOprRedis('statistics')->expire(okeys::inactiveWarnTimes($warnNum), 0);
  42. break;
  43. }
  44. }else{// 非活跃连接数 小于 阈值 将告警次数清0
  45. oo::commonOprRedis('statistics')->expire(okeys::inactiveWarnTimes($warnNum), 0);
  46. }
  47. }
  48. die('end');