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