[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class DarkConsoleXHProfPlugin extends DarkConsolePlugin { 4 5 protected $profileFilePHID; 6 7 public function getName() { 8 return 'XHProf'; 9 } 10 11 public function getColor() { 12 $data = $this->getData(); 13 if ($data['profileFilePHID']) { 14 return '#ff00ff'; 15 } 16 return null; 17 } 18 19 public function getDescription() { 20 return 'Provides detailed PHP profiling information through XHProf.'; 21 } 22 23 public function generateData() { 24 return array( 25 'profileFilePHID' => $this->profileFilePHID, 26 'profileURI' => (string)$this 27 ->getRequestURI() 28 ->alter('__profile__', 'page'), 29 ); 30 } 31 32 public function getXHProfRunID() { 33 return $this->profileFilePHID; 34 } 35 36 public function renderPanel() { 37 $data = $this->getData(); 38 39 $run = $data['profileFilePHID']; 40 $profile_uri = $data['profileURI']; 41 42 if (!DarkConsoleXHProfPluginAPI::isProfilerAvailable()) { 43 $href = PhabricatorEnv::getDoclink('Installation Guide'); 44 $install_guide = phutil_tag( 45 'a', 46 array( 47 'href' => $href, 48 'class' => 'bright-link', 49 ), 50 'Installation Guide'); 51 return hsprintf( 52 '<div class="dark-console-no-content">'. 53 'The "xhprof" PHP extension is not available. Install xhprof '. 54 'to enable the XHProf console plugin. You can find instructions in '. 55 'the %s.'. 56 '</div>', 57 $install_guide); 58 } 59 60 $result = array(); 61 62 $header = phutil_tag( 63 'div', 64 array('class' => 'dark-console-panel-header'), 65 array( 66 phutil_tag( 67 'a', 68 array( 69 'href' => $profile_uri, 70 'class' => $run ? 'disabled button' : 'green button', 71 ), 72 pht('Profile Page')), 73 phutil_tag('h1', array(), pht('XHProf Profiler')), 74 )); 75 $result[] = $header; 76 77 if ($run) { 78 $result[] = phutil_tag( 79 'a', 80 array( 81 'href' => "/xhprof/profile/$run/", 82 'class' => 'bright-link', 83 'style' => 'float: right; margin: 1em 2em 0 0; font-weight: bold;', 84 'target' => '_blank', 85 ), 86 pht('Profile Permalink')); 87 $result[] = phutil_tag( 88 'iframe', 89 array('src' => "/xhprof/profile/$run/?frame=true")); 90 } else { 91 $result[] = phutil_tag( 92 'div', 93 array('class' => 'dark-console-no-content'), 94 pht( 95 'Profiling was not enabled for this page. Use the button above '. 96 'to enable it.')); 97 } 98 99 return phutil_implode_html("\n", $result); 100 } 101 102 103 public function willShutdown() { 104 $this->profileFilePHID = DarkConsoleXHProfPluginAPI::getProfileFilePHID(); 105 } 106 107 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |