1<?php 2/** 3 * This program is free software; you can redistribute it and/or modify 4 * it under the terms of the GNU General Public License as published by 5 * the Free Software Foundation; either version 2 of the License, or 6 * (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License along 14 * with this program; if not, write to the Free Software Foundation, Inc., 15 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 16 * http://www.gnu.org/copyleft/gpl.html 17 * 18 * @file 19 */ 20 21/** 22 * Dump profiler data in a ".xhprof" file. 23 * 24 * @ingroup Profiler 25 * @since 1.25 26 */ 27class ProfilerOutputDump extends ProfilerOutput { 28 protected $suffix = ".xhprof"; 29 30 /** 31 * Can this output type be used? 32 * 33 * @return bool 34 */ 35 public function canUse() { 36 if ( empty( $this->params['outputDir'] ) ) { 37 return false; 38 } 39 return true; 40 } 41 42 public function log( array $stats ) { 43 if ( !$this->collector instanceof ProfilerXhprof ) { 44 $this->logger->error( 'ProfilerOutputDump must be used with ProfilerXhprof' ); 45 return; 46 } 47 $data = $this->collector->getRawData(); 48 $filename = sprintf( "%s/%s.%s%s", 49 $this->params['outputDir'], 50 uniqid(), 51 $this->collector->getProfileID(), 52 $this->suffix ); 53 file_put_contents( $filename, serialize( $data ) ); 54 } 55} 56