PageRenderTime 45ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/stat.php

https://github.com/JLarky/www2popup-gate
PHP | 160 lines | 111 code | 34 blank | 15 comment | 9 complexity | f9b1d84d2711406d4c235f6c21f2971e MD5 | raw file
  1. <?php
  2. function stat_page() {
  3. global $INFO;
  4. global $user_id;
  5. $cache=$vars=Array();
  6. // получаем последнюю запись, если в кеше то же самое, то отдаем кеш.
  7. $last_msg = mysql_fetch_array(mysql_query("SELECT * FROM `".$INFO['base_tabl']."` ORDER BY `id` DESC LIMIT 1"));
  8. echo mysql_error() ? mysql_error().' - '.__FILE__.':'.__LINE__ : '';
  9. $cache['last_id']=$last_msg['id'];
  10. $cache['last_popup']=$last_msg['time'];
  11. list($fromcache) = mysql_fetch_array(mysql_query("SELECT `var` FROM `cache` WHERE `name`='stat_cache'"));
  12. echo mysql_error() ? mysql_error().' - '.__FILE__.':'.__LINE__ : '';
  13. // проверяем
  14. $fromcache=unserialize($fromcache);
  15. if ($cache['last_id']==$fromcache['last_id'] and 0) {
  16. $vars=$fromcache['vars'];
  17. } else {
  18. //echo 123;
  19. // $cache['']=$last_msg[''];
  20. if ($user_id==1) {
  21. //var_dump($fromcache);
  22. //return '';
  23. }
  24. $tmp = mysql_fetch_array(mysql_query("SELECT * FROM `".$INFO['base_tabl']."` ORDER BY `id` ASC LIMIT 1"));
  25. echo mysql_error() ? mysql_error().' - '.__FILE__.':'.__LINE__ : '';
  26. $vars['first_popup']=$tmp['time'];
  27. list($popups_total) = mysql_fetch_array(mysql_query("SELECT count(*) as 'count' FROM `".$INFO['base_tabl']."`"));
  28. echo mysql_error() ? mysql_error().' - '.__FILE__.':'.__LINE__ : '';
  29. $vars['popups_total'] = $popups_total;
  30. list($chars_total) = mysql_fetch_array(mysql_query("SELECT SUM(LENGTH(`msg`)) as 'chars' FROM `".$INFO['base_tabl']."`"));
  31. echo mysql_error() ? mysql_error().' - '.__FILE__.':'.__LINE__ : '';
  32. $vars['chars_total'] = $chars_total;
  33. // fluders
  34. if (true) {
  35. $q="select src_mls as 'nick', count(*) as 'popups', sum(char_length(msg)) as 'chars', max(time) as 'last' from popup.popups where LOWER(`dst_mac`)='ff:ff:ff:ff:ff:ff' group by 1 order by 2 desc limit 21;";
  36. $e = mysql_query($q);
  37. echo mysql_error() ? mysql_error().' - '.__FILE__.':'.__LINE__ : '';
  38. $output='';$i=1;
  39. while ($row = mysql_fetch_array($e)) {
  40. //var_dump($row);
  41. $row['num']=$i++;
  42. $output .= theme('stat_row', $row, $vars);
  43. }
  44. } else {
  45. $q="select count(*) as 'popups', SUM(LENGTH(`msg`)) as 'chars', LOWER(src_mls) as 'nick' from `".$INFO['base_tabl']."` WHERE LOWER(dst_mac)='ff:ff:ff:ff:ff:ff' GROUP BY src_mls ORDER BY `popups` DESC limit 21";
  46. $e = mysql_query($q);
  47. echo mysql_error() ? mysql_error().' - '.__FILE__.':'.__LINE__ : '';
  48. $output='';$i=1;
  49. while ($row = mysql_fetch_array($e)) {
  50. $row['num']=$i++;
  51. list($last) = mysql_fetch_array(mysql_query("SELECT `time` FROM `".$INFO['base_tabl']."` WHERE LOWER(dst_mac)='ff:ff:ff:ff:ff:ff' and LOWER(`src_mls`)=LOWER('".$row['nick']."') ORDER BY `id` DESC"));
  52. echo mysql_error() ? mysql_error().' - '.__FILE__.':'.__LINE__ : '';
  53. $row['last']= $last;
  54. $output .= theme('stat_row', $row, $vars);
  55. }
  56. }
  57. $vars['stat'] = $output;
  58. $cache['popups_total']=$vars['popups_total'];
  59. $cache['vars']=$vars;
  60. $var=mysql_real_escape_string(serialize($cache));
  61. mysql_query("INSERT INTO `cache` SET `name`='stat_cache', `var`='$var' ON DUPLICATE KEY UPDATE `var`='$var'");
  62. //var_dump(mysql_affected_rows());
  63. echo mysql_error() ? mysql_error().' - '.__FILE__.':'.__LINE__ : '';
  64. }
  65. return theme('stat', $vars, $cache);
  66. $profiling=false;
  67. if ($profiling) {
  68. $q="SET profiling = 1;";
  69. $e = @mysql_query($q);
  70. };
  71. ############
  72. # PROCESSING DATA
  73. // создаём временную таблицу из базы всех общих попапов
  74. $q="CREATE TEMPORARY TABLE `tmp_".$INFO['base_tabl']."` TYPE=HEAP SELECT `id`, `src_ntb`, `time`, LENGTH(`msg`) AS 'len' FROM ".$INFO['base_tabl']." WHERE `".$INFO['base_tabl']."`.`dst_mac`='ff:ff:ff:ff:ff:ff'";
  75. $e = mysql_query($q);
  76. //echo $q;
  77. $e = mysql_query("SELECT COUNT(*) FROM `tmp_".$INFO['base_tabl']."`");
  78. $s = mysql_fetch_row($e);
  79. $tpl->assign( array( "ALL_POPUP" => $s[0]));
  80. // echo $s[0];
  81. $q="SELECT COUNT(*) FROM `tmp_".$INFO['base_tabl']."` WHERE CURDATE()=DATE(`time`)";
  82. $e = @mysql_query($q);
  83. $s = @mysql_fetch_row($e);
  84. $tpl->assign( array( "TODAY_POPUP" => $s[0]));
  85. $q="SELECT COUNT(*) FROM `tmp_".$INFO['base_tabl']."` WHERE CURDATE()=DATE(`time`)+1";
  86. $e = @mysql_query($q);
  87. $s = @mysql_fetch_row($e);
  88. $tpl->assign( array( "YESTERDAY_POPUP" => $s[0]));
  89. $q="SELECT `time` FROM `tmp_".$INFO['base_tabl']."` LIMIT 1";
  90. $e = @mysql_query($q);
  91. $s = @mysql_fetch_row($e);
  92. $tpl->assign( array( "FIRS_POPUP" => $s[0]));
  93. $q="SELECT `time` FROM `tmp_".$INFO['base_tabl']."` ORDER BY `id` DESC LIMIT 1";
  94. $e = @mysql_query($q);
  95. $s = @mysql_fetch_row($e);
  96. $tpl->assign( array( "LATER_POPUP" => $s[0]));
  97. $e = @mysql_query("SELECT SUM(`len`) FROM `tmp_".$INFO['base_tabl']."`");
  98. $s = @mysql_fetch_row($e);
  99. $tpl->assign( array( "ALL_CHARSET" => $s[0]));
  100. $topflud=0;
  101. $e = @mysql_query("SELECT UPPER(`src_ntb`), COUNT(*) AS `kol`, MAX(`time`), SUM(`len`) FROM `tmp_".$INFO['base_tabl']."` GROUP BY `src_ntb` ORDER BY `kol` DESC LIMIT 21");
  102. while($s = @mysql_fetch_row($e)){
  103. $topflud=$topflud+1;
  104. $tpl->assign( array( "FLUDERSTOP" => $topflud));
  105. $tpl->assign( array( "SRC_NTB" => $s[0]));
  106. $tpl->assign( array( "COUNT_OF_POPUPS" => $s[1]));
  107. $tpl->assign( array( "PERCENT_OF_POPUPS" => sprintf("%.2f",($s[1]/$tpl->get_assigned("ALL_POPUP"))*100)));
  108. $tpl->assign( array( "LAST_POPUP" => $s[2]));
  109. $tpl->assign( array( "COUNT_OF_C" => $s[3]));
  110. $tpl->assign( array( "PERCENT_OF_C" => sprintf("%.2f",($s[3]/$tpl->get_assigned("ALL_CHARSET"))*100)));
  111. $tpl->parse("FLUDER", "fluders");
  112. @$tpl->parse("FLUDERS", ".fluders");
  113. $tpl->parse("STAT", "stat");
  114. };
  115. if ($profiling) {
  116. $q="SHOW PROFILES";
  117. $e = @mysql_query($q);
  118. while($s = @mysql_fetch_row($e)){
  119. echo "<!--";
  120. print_r($s);
  121. echo "-->";
  122. };
  123. };
  124. // $tpl->assign( array( "LATER_POPUP" => $s[0]));
  125. }
  126. ?>