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 5.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <!-- Stats -->
  2. <div class="box">
  3. <div class="head colhead_dark"><strong>Stats</strong></div>
  4. <ul class="stats nobullet">
  5. <?php if (USER_LIMIT > 0) { ?>
  6. <li>Maximum users: <?=number_format(USER_LIMIT) ?></li>
  7. <?php
  8. }
  9. if (($UserCount = $Cache->get_value('stats_user_count')) === false) {
  10. $DB->query("
  11. SELECT COUNT(ID)
  12. FROM users_main
  13. WHERE Enabled = '1'");
  14. list($UserCount) = $DB->next_record();
  15. $Cache->cache_value('stats_user_count', $UserCount, 86400);
  16. }
  17. $UserCount = (int)$UserCount;
  18. ?>
  19. <li>Enabled users: <?=number_format($UserCount)?> <a href="stats.php?action=users" class="brackets">Details</a></li>
  20. <?php
  21. if (($UserStats = $Cache->get_value('stats_users')) === false) {
  22. $DB->query("
  23. SELECT COUNT(ID)
  24. FROM users_main
  25. WHERE Enabled = '1'
  26. AND LastAccess > '".time_minus(3600 * 24)."'");
  27. list($UserStats['Day']) = $DB->next_record();
  28. $DB->query("
  29. SELECT COUNT(ID)
  30. FROM users_main
  31. WHERE Enabled = '1'
  32. AND LastAccess > '".time_minus(3600 * 24 * 7)."'");
  33. list($UserStats['Week']) = $DB->next_record();
  34. $DB->query("
  35. SELECT COUNT(ID)
  36. FROM users_main
  37. WHERE Enabled = '1'
  38. AND LastAccess > '".time_minus(3600 * 24 * 30)."'");
  39. list($UserStats['Month']) = $DB->next_record();
  40. $Cache->cache_value('stats_users', $UserStats, 0);
  41. }
  42. ?>
  43. <li>Users active today: <?=number_format($UserStats['Day'])?> (<?=number_format($UserStats['Day'] / $UserCount * 100, 2)?>%)</li>
  44. <li>Users active this week: <?=number_format($UserStats['Week'])?> (<?=number_format($UserStats['Week'] / $UserCount * 100, 2)?>%)</li>
  45. <li>Users active this month: <?=number_format($UserStats['Month'])?> (<?=number_format($UserStats['Month'] / $UserCount * 100, 2)?>%)</li>
  46. <?php
  47. if (($TorrentCount = $Cache->get_value('stats_torrent_count')) === false) {
  48. $DB->query("
  49. SELECT COUNT(ID)
  50. FROM torrents");
  51. list($TorrentCount) = $DB->next_record();
  52. $Cache->cache_value('stats_torrent_count', $TorrentCount, 86400); // 1 day cache
  53. }
  54. if (($GroupCount = $Cache->get_value('stats_group_count')) === false) {
  55. $DB->query("
  56. SELECT COUNT(ID)
  57. FROM torrents_group");
  58. list($GroupCount) = $DB->next_record();
  59. $Cache->cache_value('stats_group_count', $GroupCount, 86400); // 1 day cache
  60. }
  61. if (($TorrentSizeTotal = $Cache->get_value('stats_torrent_size_total')) === false) {
  62. $DB->query("
  63. SELECT SUM(Size)
  64. FROM torrents");
  65. list($TorrentSizeTotal) = $DB->next_record();
  66. $Cache->cache_value('stats_torrent_size_total', $TorrentSizeTotal, 86400); // 1 day cache
  67. }
  68. ?>
  69. <li>Total Size of Torrents: <?=Format::get_size($TorrentSizeTotal)?> </li>
  70. <?php
  71. if (($ArtistCount = $Cache->get_value('stats_artist_count')) === false) {
  72. $DB->query("
  73. SELECT COUNT(ArtistID)
  74. FROM artists_group");
  75. list($ArtistCount) = $DB->next_record();
  76. $Cache->cache_value('stats_artist_count', $ArtistCount, 86400); // 1 day cache
  77. }
  78. ?>
  79. <li>Torrents: <?=number_format($TorrentCount)?></li>
  80. <li>Torrent Groups: <?=number_format($GroupCount)?></li>
  81. <li>Artists: <?=number_format($ArtistCount)?></li>
  82. <?php
  83. // End Torrent Stats
  84. if (($RequestStats = $Cache->get_value('stats_requests')) === false) {
  85. $DB->query("
  86. SELECT COUNT(ID)
  87. FROM requests");
  88. list($RequestCount) = $DB->next_record();
  89. $DB->query("
  90. SELECT COUNT(ID)
  91. FROM requests
  92. WHERE FillerID > 0");
  93. list($FilledCount) = $DB->next_record();
  94. $Cache->cache_value('stats_requests', array($RequestCount, $FilledCount), 11280);
  95. } else {
  96. list($RequestCount, $FilledCount) = $RequestStats;
  97. }
  98. // Do not divide by zero
  99. if ($RequestCount > 0) {
  100. $RequestsFilledPercent = $FilledCount / $RequestCount * 100;
  101. } else {
  102. $RequestsFilledPercent = 0;
  103. }
  104. ?>
  105. <li>Requests: <?=number_format($RequestCount)?> (<?=number_format($RequestsFilledPercent, 2)?>% filled)</li>
  106. <?php
  107. if ($SnatchStats = $Cache->get_value('stats_snatches')) {
  108. ?>
  109. <li>Snatches: <?=number_format($SnatchStats)?></li>
  110. <?php
  111. }
  112. if (($PeerStats = $Cache->get_value('stats_peers')) === false) {
  113. // Cache lock!
  114. $PeerStatsLocked = $Cache->get_value('stats_peers_lock');
  115. if (!$PeerStatsLocked) {
  116. $Cache->cache_value('stats_peers_lock', 1, 30);
  117. $DB->query("
  118. SELECT IF(remaining=0,'Seeding','Leeching') AS Type, COUNT(uid)
  119. FROM xbt_files_users
  120. WHERE active = 1
  121. GROUP BY Type");
  122. $PeerCount = $DB->to_array(0, MYSQLI_NUM, false);
  123. $SeederCount = $PeerCount['Seeding'][1] ?: 0;
  124. $LeecherCount = $PeerCount['Leeching'][1] ?: 0;
  125. $Cache->cache_value('stats_peers', array($LeecherCount, $SeederCount), 604800); // 1 week cache
  126. $Cache->delete_value('stats_peers_lock');
  127. }
  128. } else {
  129. $PeerStatsLocked = false;
  130. list($LeecherCount, $SeederCount) = $PeerStats;
  131. }
  132. if (!$PeerStatsLocked) {
  133. $Ratio = Format::get_ratio_html($SeederCount, $LeecherCount);
  134. $PeerCount = number_format($SeederCount + $LeecherCount);
  135. $SeederCount = number_format($SeederCount);
  136. $LeecherCount = number_format($LeecherCount);
  137. } else {
  138. $PeerCount = $SeederCount = $LeecherCount = $Ratio = 'Server busy';
  139. }
  140. ?>
  141. <li>Peers: <?=$PeerCount?></li>
  142. <li>Seeders: <?=$SeederCount?></li>
  143. <li>Leechers: <?=$LeecherCount?></li>
  144. <li>Seeder/leecher ratio: <?=$Ratio?></li>
  145. </ul>
  146. </div>