/details/data_dynatrace.php

https://github.com/ryandoherty/showslow · PHP · 138 lines · 118 code · 20 blank · 0 comment · 22 complexity · 4fb5f36b1d8c7cc37d5e18a07b2f9490 MD5 · raw file

  1. <?php
  2. require_once(dirname(dirname(__FILE__)).'/global.php');
  3. if (!array_key_exists('urlid', $_GET) || filter_var($_GET['urlid'], FILTER_VALIDATE_INT) === false) {
  4. header('HTTP/1.0 400 Bad Request');
  5. ?><html>
  6. <head>
  7. <title>Bad Request: no valid urlid specified</title>
  8. </head>
  9. <body>
  10. <h1>Bad Request: no valid urld specified</h1>
  11. <p>You must pass valid URL ID as 'urlid' parameter</p>
  12. </body></html>
  13. <?php
  14. exit;
  15. }
  16. $query = sprintf("SELECT url, id FROM urls WHERE id = %d", mysql_real_escape_string($_GET['urlid']));
  17. $result = mysql_query($query);
  18. if (!$result) {
  19. error_log(mysql_error());
  20. }
  21. $row = mysql_fetch_assoc($result);
  22. $url = $row['url'];
  23. $urlid = $row['id'];
  24. mysql_free_result($result);
  25. if (array_key_exists('subset', $_REQUEST)) {
  26. if ($_REQUEST['subset'] == 'graph')
  27. {
  28. $query = sprintf("SELECT UNIX_TIMESTAMP(d.timestamp) as time, rank
  29. FROM dynatrace d WHERE d.url_id = %d AND d.timestamp > DATE_SUB(now(),INTERVAL 3 MONTH)
  30. ORDER BY d.timestamp DESC",
  31. mysql_real_escape_string($urlid)
  32. );
  33. }
  34. else if ($_REQUEST['subset'] == 'table')
  35. {
  36. $query = sprintf("SELECT UNIX_TIMESTAMP(d.timestamp) as time,
  37. pagesize, reqnumber, rank, timetoimpression
  38. FROM dynatrace d WHERE d.url_id = %d AND d.timestamp > DATE_SUB(now(),INTERVAL 3 MONTH)
  39. ORDER BY d.timestamp DESC",
  40. mysql_real_escape_string($urlid)
  41. );
  42. }
  43. } else {
  44. $query = sprintf("SELECT UNIX_TIMESTAMP(d.timestamp) as time,
  45. rank, cache, net, server, js,
  46. timetoimpression, timetoonload, timetofullload,
  47. reqnumber, xhrnumber,
  48. pagesize, cachablesize, noncachablesize,
  49. timeonnetwork, timeinjs, timeinrendering
  50. FROM dynatrace d WHERE d.url_id = %d AND d.timestamp > DATE_SUB(now(),INTERVAL 3 MONTH)
  51. ORDER BY d.timestamp DESC",
  52. mysql_real_escape_string($urlid)
  53. );
  54. }
  55. $result = mysql_query($query);
  56. if (!$result) {
  57. error_log(mysql_error());
  58. }
  59. $data = array();
  60. header('Content-type: text/plain');
  61. if (array_key_exists('ver', $_GET)) {
  62. header('Expires: '.date('r', time() + 315569260));
  63. header('Cache-control: max-age=315569260');
  64. }
  65. $rows = array();
  66. while ($row = mysql_fetch_assoc($result)) {
  67. $rows[] = $row;
  68. }
  69. mysql_free_result($result);
  70. if (array_key_exists('smooth', $_REQUEST)) {
  71. require_once(dirname(__FILE__).'/smooth.php');
  72. smooth($rows, array('rank'));
  73. }
  74. if (!array_key_exists('subset', $_REQUEST))
  75. {
  76. header('Content-disposition: attachment;filename=dynatrace.csv');
  77. echo '# Measurement time';
  78. echo ', Overall Page Rank (Percentage)';
  79. echo ', Caching Rank (Percentage)';
  80. echo ', Network Rank (Percentage)';
  81. echo ', Server-Side Rank (Percentage)';
  82. echo ', JavaScript Rank (Percentage)';
  83. echo ', Time to First Impression (ms)';
  84. echo ', Time to onLoad (ms)';
  85. echo ', Time to Full Page Load (ms)';
  86. echo ', Number of Requests';
  87. echo ', Number of XHR Requests';
  88. echo ', Total Page Size (bytes)';
  89. echo ', Total Cachable Size (bytes)';
  90. echo ', Total Non-Cachable Size (bytes)';
  91. echo ', Total Time on Network (ms)';
  92. echo ', Total Time in JavaScript (ms)';
  93. echo ', Total Time in Rendering (ms)';
  94. echo "\n";
  95. }
  96. foreach ($rows as $row) {
  97. echo date('c', $row['time']).',';
  98. if (array_key_exists('subset', $_REQUEST)) {
  99. if ($_REQUEST['subset'] == 'graph')
  100. {
  101. echo $row['rank'];
  102. }
  103. else if ($_REQUEST['subset'] == 'table')
  104. {
  105. echo $row['pagesize'].','.
  106. $row['reqnumber'].','.
  107. $row['rank'].','.
  108. $row['timetoimpression'];
  109. }
  110. } else {
  111. echo $row['rank'].','.$row['cache'].','.$row['net'].','.$row['server'].','.$row['js'].','.
  112. $row['timetoimpression'].','.$row['timetoonload'].','.$row['timetofullload'].','.
  113. $row['reqnumber'].','.$row['xhrnumber'].','.
  114. $row['pagesize'].','.$row['cachablesize'].','.$row['noncachablesize'].','.
  115. $row['timeonnetwork'].','.$row['timeinjs'].','.$row['timeinrendering'];
  116. }
  117. echo "\n";
  118. }