params['udpport'] ) ) { $this->port = $this->params['udpport']; } elseif( $wgUDPProfilerPort ) { $this->port = $wgUDPProfilerPort; } if ( isset( $this->params['udphost'] ) ) { $this->host = $this->params['udphost']; } elseif( $wgUDPProfilerHost ) { $this->host = $wgUDPProfilerHost; } if ( isset( $this->params['udpformat'] ) ) { $this->format = $this->params['udpformat']; } elseif( $wgUDPProfilerFormatString ) { $this->format = $wgUDPProfilerFormatString; } } public function canUse() { # Sockets are not enabled return function_exists( 'socket_create' ); } public function log( array $stats ) { $sock = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP ); $plength = 0; $packet = ""; foreach ( $stats as $pfdata ) { $pfline = sprintf( $this->format, $this->collector->getProfileID(), $pfdata['calls'], $pfdata['cpu'] / 1000, // ms => sec 0.0, // sum of CPU^2 for each invocation (unused) $pfdata['real'] / 1000, // ms => sec 0.0, // sum of real^2 for each invocation (unused) $pfdata['name'], $pfdata['memory'] ); $length = strlen( $pfline ); if ( $length + $plength > 1400 ) { socket_sendto( $sock, $packet, $plength, 0, $this->host, $this->port ); $packet = ""; $plength = 0; } $packet .= $pfline; $plength += $length; } socket_sendto( $sock, $packet, $plength, 0x100, $this->host, $this->port ); } }