BioTorrents.de’s version of Gazelle
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

stats.php 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <?php
  2. // Begin user stats
  3. if (($UserCount = $Cache->get_value('stats_user_count')) === false) {
  4. $DB->query("
  5. SELECT
  6. COUNT(`ID`)
  7. FROM
  8. `users_main`
  9. WHERE
  10. `Enabled` = '1'
  11. ");
  12. list($UserCount) = $DB->next_record();
  13. $Cache->cache_value('stats_user_count', $UserCount, 0); // inf cache
  14. }
  15. if (($UserStats = $Cache->get_value('stats_users')) === false) {
  16. $DB->query("
  17. SELECT
  18. COUNT(`ID`)
  19. FROM
  20. `users_main`
  21. WHERE
  22. `Enabled` = '1'
  23. AND `LastAccess` > '".time_minus(3600 * 24)."'
  24. ");
  25. list($UserStats['Day']) = $DB->next_record();
  26. $DB->query("
  27. SELECT
  28. COUNT(`ID`)
  29. FROM
  30. `users_main`
  31. WHERE
  32. `Enabled` = '1'
  33. AND `LastAccess` > '".time_minus(3600 * 24 * 7)."'
  34. ");
  35. list($UserStats['Week']) = $DB->next_record();
  36. $DB->query("
  37. SELECT
  38. COUNT(`ID`)
  39. FROM
  40. `users_main`
  41. WHERE
  42. `Enabled` = '1'
  43. AND LastAccess > '".time_minus(3600 * 24 * 30)."'
  44. ");
  45. list($UserStats['Month']) = $DB->next_record();
  46. $Cache->cache_value('stats_users', $UserStats, 0);
  47. }
  48. // Begin torrent stats
  49. if (($TorrentCount = $Cache->get_value('stats_torrent_count')) === false) {
  50. $DB->query("
  51. SELECT
  52. COUNT(`ID`)
  53. FROM
  54. `torrents`
  55. ");
  56. list($TorrentCount) = $DB->next_record();
  57. $Cache->cache_value('stats_torrent_count', $TorrentCount, 604800); // staggered 1 week cache
  58. }
  59. if (($AlbumCount = $Cache->get_value('stats_album_count')) === false) {
  60. $DB->query("
  61. SELECT
  62. COUNT(`ID`)
  63. FROM
  64. `torrents_group`
  65. WHERE
  66. `CategoryID` = '1'
  67. ");
  68. list($AlbumCount) = $DB->next_record();
  69. $Cache->cache_value('stats_album_count', $AlbumCount, 604830); // staggered 1 week cache
  70. }
  71. if (($ArtistCount = $Cache->get_value('stats_artist_count')) === false) {
  72. $DB->query("
  73. SELECT
  74. COUNT(`ArtistID`)
  75. FROM
  76. `artists_group`
  77. ");
  78. list($ArtistCount) = $DB->next_record();
  79. $Cache->cache_value('stats_artist_count', $ArtistCount, 604860); // staggered 1 week cache
  80. }
  81. // Begin request stats
  82. if (($RequestStats = $Cache->get_value('stats_requests')) === false) {
  83. $DB->query("
  84. SELECT
  85. COUNT(`ID`)
  86. FROM
  87. `requests`
  88. ");
  89. list($RequestCount) = $DB->next_record();
  90. $DB->query("
  91. SELECT
  92. COUNT(`ID`)
  93. FROM
  94. `requests`
  95. WHERE
  96. `FillerID` > 0
  97. ");
  98. list($FilledCount) = $DB->next_record();
  99. $Cache->cache_value('stats_requests', array($RequestCount, $FilledCount), 11280);
  100. } else {
  101. list($RequestCount, $FilledCount) = $RequestStats;
  102. }
  103. // Begin swarm stats
  104. if (($PeerStats = $Cache->get_value('stats_peers')) === false) {
  105. // Cache lock!
  106. if ($Cache->get_query_lock('peer_stats')) {
  107. $DB->query("
  108. SELECT
  109. IF(
  110. `remaining` = 0,
  111. 'Seeding',
  112. 'Leeching'
  113. ) AS `Type`,
  114. COUNT(`uid`)
  115. FROM
  116. `xbt_files_users`
  117. WHERE
  118. `active` = 1
  119. GROUP BY
  120. `Type`
  121. ");
  122. $PeerCount = $DB->to_array(0, MYSQLI_NUM, false);
  123. $LeecherCount = isset($PeerCount['Leeching']) ? $PeerCount['Leeching'][1] : 0;
  124. $SeederCount = isset($PeerCount['Seeding']) ? $PeerCount['Seeding'][1] : 0;
  125. $Cache->cache_value('stats_peers', array($LeecherCount, $SeederCount), 1209600); // 2 week cache
  126. $Cache->clear_query_lock('peer_stats');
  127. } else {
  128. $LeecherCount = $SeederCount = 0;
  129. }
  130. } else {
  131. list($LeecherCount, $SeederCount) = $PeerStats;
  132. }
  133. json_print('success', array(
  134. 'maxUsers' => USER_LIMIT,
  135. 'enabledUsers' => (int) $UserCount,
  136. 'usersActiveThisDay' => (int) $UserStats['Day'],
  137. 'usersActiveThisWeek' => (int) $UserStats['Week'],
  138. 'usersActiveThisMonth' => (int) $UserStats['Month'],
  139. 'torrentCount' => (int) $TorrentCount,
  140. 'groupCount' => (int) $AlbumCount,
  141. 'artistCount' => (int) $ArtistCount,
  142. 'requestCount' => (int) $RequestCount,
  143. 'filledRequestCount' => (int) $FilledCount,
  144. 'seederCount' => (int) $SeederCount,
  145. 'leecherCount' => (int) $LeecherCount
  146. ));