MediaWiki
REL1_23
|
00001 <?php 00030 class ProfilerSimpleUDP extends ProfilerSimple { 00031 public function isPersistent() { 00032 return true; 00033 } 00034 00035 public function logData() { 00036 global $wgUDPProfilerHost, $wgUDPProfilerPort, $wgUDPProfilerFormatString; 00037 00038 $this->close(); 00039 00040 if ( isset( $this->mCollated['-total'] ) && $this->mCollated['-total']['real'] < $this->mMinimumTime ) { 00041 # Less than minimum, ignore 00042 return; 00043 } 00044 00045 if ( !function_exists( 'socket_create' ) ) { 00046 # Sockets are not enabled 00047 return; 00048 } 00049 00050 $sock = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP ); 00051 $plength = 0; 00052 $packet = ""; 00053 foreach ( $this->mCollated as $entry => $pfdata ) { 00054 if ( !isset( $pfdata['count'] ) 00055 || !isset( $pfdata['cpu'] ) 00056 || !isset( $pfdata['cpu_sq'] ) 00057 || !isset( $pfdata['real'] ) 00058 || !isset( $pfdata['real_sq'] ) ) { 00059 continue; 00060 } 00061 $pfline = sprintf( $wgUDPProfilerFormatString, $this->getProfileID(), $pfdata['count'], 00062 $pfdata['cpu'], $pfdata['cpu_sq'], $pfdata['real'], $pfdata['real_sq'], $entry ); 00063 $length = strlen( $pfline ); 00064 /* printf("<!-- $pfline -->"); */ 00065 if ( $length + $plength > 1400 ) { 00066 socket_sendto( $sock, $packet, $plength, 0, $wgUDPProfilerHost, $wgUDPProfilerPort ); 00067 $packet = ""; 00068 $plength = 0; 00069 } 00070 $packet .= $pfline; 00071 $plength += $length; 00072 } 00073 socket_sendto( $sock, $packet, $plength, 0x100, $wgUDPProfilerHost, $wgUDPProfilerPort ); 00074 } 00075 }