UDP extension for ProfilerSimple, works together with 'udpprofile' daemon
authorDomas Mituzas <midom@users.mediawiki.org>
Mon, 26 Dec 2005 10:13:21 +0000 (10:13 +0000)
committerDomas Mituzas <midom@users.mediawiki.org>
Mon, 26 Dec 2005 10:13:21 +0000 (10:13 +0000)
includes/DefaultSettings.php
includes/ProfilerSimpleUDP.php [new file with mode: 0644]

index 0b94200..6e79fbc 100644 (file)
@@ -1057,6 +1057,10 @@ $wgProfileCallTree = false;
 /** If not empty, specifies profiler type to load */
 $wgProfilerType = '';
 
+/** Settings for UDP profiler */
+$wgUDPProfilerHost = '127.0.0.1';
+$wgUDPProfilerPort = '3811';
+
 /** Detects non-matching wfProfileIn/wfProfileOut calls */
 $wgDebugProfiling = false;
 /** Output debug message on every wfProfileIn/wfProfileOut */
diff --git a/includes/ProfilerSimpleUDP.php b/includes/ProfilerSimpleUDP.php
new file mode 100644 (file)
index 0000000..bc6ca98
--- /dev/null
@@ -0,0 +1,34 @@
+<?
+/* ProfilerSimpleUDP class, that sends out messages for 'udpprofile' daemon
+   (the one from wikipedia/udpprofile CVS )
+*/
+
+require_once('Profiling.php');
+require_once('ProfilerSimple.php');
+
+class ProfilerSimpleUDP extends ProfilerSimple {
+       function getFunctionReport() {
+               global $wgUDPProfilerHost;
+               global $wgUDPProfilerPort;
+               global $wgDBname;
+               
+               $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
+               $plength=0;
+               $packet="";
+               foreach ($this->mCollated as $entry=>$pfdata) {
+                       $pfline=sprintf ("%s %s %d %f %f %f %f %s\n", $wgDBname,"-",$pfdata['count'],
+                               $pfdata['cpu'],$pfdata['cpu_sq'],$pfdata['real'],$pfdata['real_sq'],$entry);
+                       $length=strlen($pfline);
+                       /* printf("<!-- $pfline -->"); */
+                       if ($length+$plength>1400) {
+                               socket_sendto($sock,$packet,$plength,0,$wgUDPProfilerHost,$wgUDPProfilerPort);
+                               $packet="";
+                               $plength=0;
+                       }
+                       $packet.=$pfline;
+                       $plength+=$length;
+               }
+               socket_sendto($sock,$packet,$plength,0x100,$wgUDPProfilerHost,$wgUDPProfilerPort);
+       }
+}
+?>