[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/xhprof/controller/ -> PhabricatorXHProfSampleListController.php (source)

   1  <?php
   2  
   3  final class PhabricatorXHProfSampleListController
   4    extends PhabricatorXHProfController {
   5  
   6    private $view;
   7  
   8    public function willProcessRequest(array $data) {
   9      $this->view = idx($data, 'view', 'all');
  10    }
  11  
  12    public function processRequest() {
  13      $request = $this->getRequest();
  14      $user = $request->getUser();
  15  
  16      $pager = new AphrontPagerView();
  17      $pager->setOffset($request->getInt('page'));
  18  
  19      switch ($this->view) {
  20        case 'sampled':
  21          $clause = '`sampleRate` > 0';
  22          $show_type = false;
  23          break;
  24        case 'my-runs':
  25          $clause = qsprintf(
  26            id(new PhabricatorXHProfSample())->establishConnection('r'),
  27            '`sampleRate` = 0 AND `userPHID` = %s',
  28            $request->getUser()->getPHID());
  29          $show_type = false;
  30          break;
  31        case 'manual':
  32          $clause = '`sampleRate` = 0';
  33          $show_type = false;
  34          break;
  35        case 'all':
  36        default:
  37          $clause = '1 = 1';
  38          $show_type = true;
  39          break;
  40      }
  41  
  42      $samples = id(new PhabricatorXHProfSample())->loadAllWhere(
  43        '%Q ORDER BY id DESC LIMIT %d, %d',
  44        $clause,
  45        $pager->getOffset(),
  46        $pager->getPageSize() + 1);
  47  
  48      $samples = $pager->sliceResults($samples);
  49      $pager->setURI($request->getRequestURI(), 'page');
  50  
  51      $list = new PHUIObjectItemListView();
  52      foreach ($samples as $sample) {
  53        $file_phid = $sample->getFilePHID();
  54  
  55        $item = id(new PHUIObjectItemView())
  56          ->setObjectName($sample->getID())
  57          ->setHeader($sample->getRequestPath())
  58          ->setHref($this->getApplicationURI('profile/'.$file_phid.'/'))
  59          ->addAttribute(
  60            number_format($sample->getUsTotal())." \xCE\xBCs");
  61  
  62        if ($sample->getController()) {
  63          $item->addAttribute($sample->getController());
  64        }
  65  
  66        $item->addAttribute($sample->getHostName());
  67  
  68        $rate = $sample->getSampleRate();
  69        if ($rate == 0) {
  70          $item->addIcon('flag-6', pht('Manual Run'));
  71        } else {
  72          $item->addIcon('flag-7', pht('Sampled (1/%d)', $rate));
  73        }
  74  
  75        $item->addIcon(
  76          'none',
  77          phabricator_datetime($sample->getDateCreated(), $user));
  78  
  79        $list->addItem($item);
  80      }
  81  
  82      $list->setPager($pager);
  83  
  84      return $this->buildStandardPageResponse(
  85        $list,
  86        array(
  87          'title' => pht('XHProf Samples'),
  88          'device' => true,
  89        ));
  90  
  91    }
  92  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1