MediaWiki  REL1_24
ProfilerSimpleUDP.php
Go to the documentation of this file.
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 }