* <https://github.com/phacility/xhprof>. XHProf can be installed as a PECL
* package for use with PHP5 (Zend PHP) and is built-in to HHVM 3.3.0.
*
+ * This also supports using the Tideways profiler
+ * <https://github.com/tideways/php-profiler-extension>, which additionally
+ * has support for PHP7.
+ *
* @since 1.28
*/
class Xhprof {
*/
public static function enable( $flags = 0, $options = [] ) {
if ( self::isEnabled() ) {
- throw new Exception( 'Xhprof profiling is already enabled.' );
+ throw new Exception( 'Profiling is already enabled.' );
}
self::$enabled = true;
- xhprof_enable( $flags, $options );
+ if ( function_exists( 'xhprof_enable' ) ) {
+ xhprof_enable( $flags, $options );
+ } elseif ( function_exists( 'tideways_enable' ) ) {
+ tideways_enable( $flags, $options );
+ } else {
+ throw new Exception( "Neither xhprof nor tideways are installed" );
+ }
}
/**
public static function disable() {
if ( self::isEnabled() ) {
self::$enabled = false;
- return xhprof_disable();
+ if ( function_exists( 'xhprof_disable' ) ) {
+ return xhprof_disable();
+ } else {
+ // tideways
+ return tideways_disable();
+ }
}
}
}
* ($wgProfiler['exclude']) containing an array of function names.
* Shell-style patterns are also accepted.
*
+ * It is also possible to use the Tideways PHP extension, which is mostly
+ * a drop-in replacement for Xhprof. Just change the XHPROF_FLAGS_* constants
+ * to TIDEWAYS_FLAGS_*.
+ *
* @author Bryan Davis <bd808@wikimedia.org>
* @copyright © 2014 Bryan Davis and Wikimedia Foundation.
* @ingroup Profiler
* @see Xhprof
* @see https://php.net/xhprof
* @see https://github.com/facebook/hhvm/blob/master/hphp/doc/profiling.md
+ * @see https://github.com/tideways/php-profiler-extension
*/
class ProfilerXhprof extends Profiler {
/**