graph.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. date_default_timezone_set('America/Toronto');
  3. function get_requests($slug){
  4. $time = time();
  5. $requests = [];
  6. for($i=0; $i<73; $i++){
  7. $data = apcu_fetch(intdiv($time - (3600 * $i), 3600) . ".$slug");
  8. $requests[] = [$i, ($data === false ? 0 : $data)];
  9. }
  10. // rtrim() out all entries that are 0
  11. $out = [];
  12. $found = false;
  13. for($i=count($requests) - 1; $i>=0; $i--){
  14. if($requests[$i][1] !== 0){
  15. $found = $i;
  16. break;
  17. }
  18. }
  19. if($found === false){
  20. return [];
  21. }
  22. $requests = array_slice($requests, 0, $found + 1);
  23. return $requests;
  24. }
  25. $bot_requests = get_requests("bot_requests");
  26. $real_requests = get_requests("real_requests");
  27. $real_reqs_24h = 0;
  28. for($i=0; $i<count($real_requests); $i++){
  29. if($real_requests[$i][1] !== false){
  30. $real_reqs_24h += $real_requests[$i][1];
  31. }
  32. }
  33. $real_reqs_72h = 0;
  34. for($i=0; $i<count($real_requests); $i++){
  35. if($real_requests[$i][1] !== false){
  36. $real_reqs_72h += $real_requests[$i][1];
  37. }
  38. }
  39. header("Content-Type: image/png");
  40. include "../../lib/graph_gen.php";
  41. $graph = new graph();
  42. echo $graph->render([
  43. "title" => "Number of requests within the last 72 hours (non-cummulative)",
  44. "subtitle" => date("jS M y @ g:ia", time()) . " || 24h=" . number_format($real_reqs_24h) . ", 72h=" . number_format($real_reqs_72h) . " || localhost:8000",
  45. "x_label" => "<= Hours passed =>",
  46. "y_label" => "<= Request count/hour =>",
  47. "grad_x" => 25,
  48. "grad_y" => 20,
  49. "data" => [
  50. "Bot requests" => $bot_requests,
  51. "Real requests" => $real_requests,
  52. ]
  53. ]);