Пример #1
0
 private function saveRelatedStats()
 {
     $batchSaver = new BatchSaver();
     $batchSaver->pageSize = 1000;
     foreach ($this->relatedStats as $stat) {
         $batchSaver->add($stat);
     }
     $batchSaver->flush();
     $this->relatedStats = array();
 }
Пример #2
0
 public function addRun($xhprofData, Run $run = null)
 {
     if (!$xhprofData) {
         return;
     }
     //Database::getInstance()->log(new Log('stdout'));
     if (null === $run) {
         $run = new Run();
         $run->ut = time();
     }
     $this->run = $run;
     $this->symbolStats = array();
     $batchSaver = new BatchSaver();
     $batchSaver->pageSize = 1000;
     $run->addXhSample($xhprofData['main()']);
     $run->save();
     $this->getStat($this->getSymbol('main()'));
     //->addXhSample($xhprofData['main()']);
     $totalWallTime = 0;
     $totalCount = 0;
     foreach ($xhprofData as $key => $value) {
         if ('main()' === $key) {
             continue;
         }
         $this->lastSample = $value;
         $symbolNames = explode('==>', $key);
         $parentSymbol = $this->getSymbol($symbolNames[0]);
         $childSymbol = $this->getSymbol($symbolNames[1]);
         if ('main()' === $parentSymbol->name) {
             $totalWallTime += $value['wt'];
         }
         $totalCount += $value['ct'];
         /*
         $relatedStat = new RelatedStat();
         $relatedStat->runId = $run->id;
         $relatedStat->parentSymbolId = $parentSymbol->id;
         $relatedStat->childSymbolId = $childSymbol->id;
         $relatedStat->addXhSample($value);
         */
         $this->getStat($parentSymbol)->subXhSample($value);
         $this->getStat($childSymbol)->addXhSample($value);
         $this->getStat($childSymbol, false)->addXhSample($value);
         //$batchSaver->add($relatedStat);
         //$relatedStat->save();
         unset($parentSymbol, $childSymbol);
     }
     $this->getStat($this->getSymbol('main()'))->wallTime = $totalWallTime;
     $this->getStat($this->getSymbol('main()'))->calls = $totalCount;
     //$batchSaver->flush();
     $batchSaver = new BatchSaver();
     $batchSaver->pageSize = 1000;
     foreach ($this->symbolStats as $stat) {
         $batchSaver->add($stat);
     }
     $batchSaver->flush();
     /*
     $columns = SymbolStat::columns();
     Database::getInstance()
         ->update(SymbolStat::table()->schemaName)
         ->set('? = ? / ?, ? = ? / ?',
             $columns->wallTimePart,
             $columns->wallTime,
             $totalWallTime,
             $columns->countPart,
             $columns->count,
             $totalCount
         )
         ->where('? = ?', $columns->runId, $run->id)->query()->execute();
     */
     //die();
     $this->groupRun->wallTime += $totalWallTime;
     $this->groupRun->runs++;
     $this->groupRun->save();
 }