PageRenderTime 22ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/details/data_pagespeed.php

http://showslow.googlecode.com/
PHP | 119 lines | 100 code | 19 blank | 0 comment | 14 complexity | be36b04042cda634d09c4cc8438ad7f9 MD5 | raw file
  1. <?php
  2. require_once(dirname(dirname(__FILE__)).'/global.php');
  3. if (!array_key_exists('url', $_GET) || filter_var($_GET['url'], FILTER_VALIDATE_URL) === false) {
  4. header('HTTP/1.0 400 Bad Request');
  5. ?><html>
  6. <head>
  7. <title>Bad Request: no valid url specified</title>
  8. </head>
  9. <body>
  10. <h1>Bad Request: no valid url specified</h1>
  11. <p>You must pass valid URL as 'url' parameter</p>
  12. </body></html>
  13. <?php
  14. exit;
  15. }
  16. $query = sprintf("SELECT id FROM urls WHERE urls.url = '%s'", mysql_real_escape_string($_GET['url']));
  17. $result = mysql_query($query);
  18. if (!$result) {
  19. error_log(mysql_error());
  20. }
  21. $row = mysql_fetch_assoc($result);
  22. $urlid = $row['id'];
  23. mysql_free_result($result);
  24. $query = sprintf("SELECT UNIX_TIMESTAMP(p.timestamp) as time,
  25. p.w, p.o, p.l, p.r, p.t, p.v,
  26. pBadReqs, pBrowserCache, pCacheValid, pCharsetEarly, pCombineCSS,
  27. pCombineJS, pCssImport, pCssInHead, pCssJsOrder, pCssSelect,
  28. pDeferJS, pDocWrite, pDupeRsrc, pGzip, pImgDims,
  29. pMinDns, pMinifyCSS, pMinifyHTML, pMinifyJS, pMinRedirect,
  30. pMinReqSize, pNoCookie, pOptImgs, pParallelDl, pPreferAsync,
  31. pRemoveQuery, pScaleImgs, pSprite, pUnusedCSS, pVaryAE
  32. FROM pagespeed p WHERE p.url_id = %d AND p.timestamp > DATE_SUB(now(),INTERVAL 3 MONTH)
  33. ORDER BY p.timestamp DESC",
  34. mysql_real_escape_string($urlid)
  35. );
  36. $result = mysql_query($query);
  37. if (!$result) {
  38. error_log(mysql_error());
  39. }
  40. $data = array();
  41. header('Content-type: text/plain');
  42. if (array_key_exists('ver', $_GET)) {
  43. header('Expires: '.date('r', time() + 315569260));
  44. header('Cache-control: max-age=315569260');
  45. }
  46. $rows = array();
  47. while ($row = mysql_fetch_assoc($result)) {
  48. $rows[] = $row;
  49. }
  50. mysql_free_result($result);
  51. if (array_key_exists('smooth', $_REQUEST)) {
  52. require_once(dirname(__FILE__).'/smooth.php');
  53. smooth($rows, array('w', 'o', 'r', 'l'));
  54. }
  55. if (!array_key_exists('subset', $_REQUEST) || !$_REQUEST['subset'] == 'graph')
  56. {
  57. header('Content-disposition: attachment;filename=pagespeed.csv');
  58. }
  59. echo '# Measurements gathered for '.$_GET['url']."\n";
  60. foreach ($rows as $row) {
  61. echo date('c', $row['time']).','.
  62. $row['w'].','.$row['o'].','.$row['l'].','.$row['r'];
  63. if (array_key_exists('subset', $_REQUEST) && $_REQUEST['subset'] == 'graph')
  64. {
  65. echo "\n";
  66. } else {
  67. echo ','.$row['t'].','.$row['v'].','.
  68. $row['pBadReqs'].','.
  69. $row['pBrowserCache'].','.
  70. $row['pCacheValid'].','.
  71. $row['pCharsetEarly'].','.
  72. $row['pCombineCSS'].','.
  73. $row['pCombineJS'].','.
  74. $row['pCssImport'].','.
  75. $row['pCssInHead'].','.
  76. $row['pCssJsOrder'].','.
  77. $row['pCssSelect'].','.
  78. $row['pDeferJS'].','.
  79. $row['pDocWrite'].','.
  80. $row['pDupeRsrc'].','.
  81. $row['pGzip'].','.
  82. $row['pImgDims'].','.
  83. $row['pMinDns'].','.
  84. $row['pMinifyCSS'].','.
  85. $row['pMinifyHTML'].','.
  86. $row['pMinifyJS'].','.
  87. $row['pMinRedirect'].','.
  88. $row['pMinReqSize'].','.
  89. $row['pNoCookie'].','.
  90. $row['pOptImgs'].','.
  91. $row['pParallelDl'].','.
  92. $row['pPreferAsync'].','.
  93. $row['pRemoveQuery'].','.
  94. $row['pScaleImgs'].','.
  95. $row['pSprite'].','.
  96. $row['pUnusedCSS'].','.
  97. $row['pVaryAE'].','.
  98. "\n";
  99. }
  100. }