MediaWiki
REL1_24
|
00001 <?php 00030 class ProfilerSimpleUDP extends ProfilerStandard { 00031 protected function collateOnly() { 00032 return true; 00033 } 00034 00035 public function isPersistent() { 00036 return true; 00037 } 00038 00039 public function logData() { 00040 global $wgUDPProfilerHost, $wgUDPProfilerPort, $wgUDPProfilerFormatString; 00041 00042 $this->close(); 00043 00044 if ( !function_exists( 'socket_create' ) ) { 00045 # Sockets are not enabled 00046 return; 00047 } 00048 00049 $sock = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP ); 00050 $plength = 0; 00051 $packet = ""; 00052 foreach ( $this->mCollated as $entry => $pfdata ) { 00053 if ( !isset( $pfdata['count'] ) 00054 || !isset( $pfdata['cpu'] ) 00055 || !isset( $pfdata['cpu_sq'] ) 00056 || !isset( $pfdata['real'] ) 00057 || !isset( $pfdata['real_sq'] ) ) { 00058 continue; 00059 } 00060 $pfline = sprintf( $wgUDPProfilerFormatString, $this->getProfileID(), $pfdata['count'], 00061 $pfdata['cpu'], $pfdata['cpu_sq'], $pfdata['real'], $pfdata['real_sq'], $entry, 00062 $pfdata['memory'] ); 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 }