crontab_apiLog.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. if (substr(PHP_SAPI_NAME(), 0, 3) !== 'cli') {
  3. die("The program runs only in CLI mode!");
  4. }
  5. $sid = $lid = 1;
  6. include_once dirname(__FILE__) . "/crontab.inc.php";
  7. include_once dirname(__FILE__) . "/../com.php";
  8. set_time_limit(0);
  9. //新登录记录
  10. function writeNewLoginLog(){
  11. $td = date('Ymd');
  12. $query = "SHOW TABLES LIKE 'new_login_log_$td'";
  13. $tbInfo = oo::commonOprDb('api_log')->getOne($query,1);
  14. $res1 =true;
  15. if(empty($tbInfo)){
  16. $sql = oo::cfg('sql')['new_login_log'];
  17. $sql = str_replace('#table#', "new_login_log_{$td}", $sql);
  18. $res1 =oo::commonOprDb('api_log')->query($sql);
  19. }
  20. $fields =["uid","sid","lv","version","ip","deviceId","deviceInfos","ts","ab"];
  21. if($res1){
  22. $yd = date('Ymd',strtotime('-1 day'));
  23. $old_key = "API_LOGS:{$yd}-loginNew";
  24. if(oo::commonOprRedis('statistics')->exists($old_key)){//还存在昨天的
  25. $tb = "crazygod_api_log.new_login_log_{$yd}";
  26. $list = oo::commonOprRedis('statistics')->lGetRange($old_key,0,-1);
  27. // foreach($list as $k => $v){
  28. // $v = json_decode($v, true);
  29. // if(!is_array($v)){
  30. // continue;
  31. // }
  32. // $v[] = getUserAbKey($v[0]);
  33. // $list[$k] = json_encode($v);
  34. // }
  35. $sql2 =funs::db_intsertArrSQL($tb,$fields,$list,1);
  36. $res2 = oo::commonOprDb('api_log')->query($sql2);
  37. if($res2){
  38. oo::commonOprRedis('statistics')->delete($old_key);
  39. }
  40. }
  41. $key = "API_LOGS:{$td}-loginNew";
  42. $len = oo::commonOprRedis('statistics')->lLen($key);
  43. if($len>0){
  44. if($len>5000){
  45. $len = 5000;
  46. }
  47. $tb = "crazygod_api_log.new_login_log_{$td}";
  48. $list = oo::commonOprRedis('statistics')->lGetRange($key,0,$len-1);
  49. // foreach($list as $k => $v){
  50. // $v = json_decode($v, true);
  51. // if(!is_array($v)){
  52. // continue;
  53. // }
  54. // $v[] = getUserAbKey($v[0]);
  55. // $list[$k] = json_encode($v);
  56. // }
  57. $sql3 = funs::db_intsertArrSQL($tb,$fields,$list,1);
  58. $res3 = oo::commonOprDb('api_log')->query($sql3);
  59. // if($res3){
  60. oo::commonOprRedis('statistics')->lTrim($key,$len,-1);
  61. // }
  62. }
  63. }
  64. }
  65. function getUserAbKey($uid) {
  66. $abKey = oo::commonOprRedis('common')->hGet(okeys::UserAbTest(), $uid);
  67. if(empty($key) || $key < 1){
  68. $key = 'D';
  69. }elseif($key > 2){
  70. $key = 'C';
  71. }else{
  72. $key = $key == '1' ? 'A' : 'B';
  73. }
  74. return $key;
  75. }
  76. writeNewLoginLog();
  77. //writeLoginLog();//过度清理
  78. //writeConnectLog();//过度清理