summaryrefslogtreecommitdiff
path: root/includes/profiler/ProfilerSimpleUDP.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/profiler/ProfilerSimpleUDP.php')
-rw-r--r--includes/profiler/ProfilerSimpleUDP.php41
1 files changed, 41 insertions, 0 deletions
diff --git a/includes/profiler/ProfilerSimpleUDP.php b/includes/profiler/ProfilerSimpleUDP.php
new file mode 100644
index 00000000..ed49d5a2
--- /dev/null
+++ b/includes/profiler/ProfilerSimpleUDP.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * @file
+ * @ingroup Profiler
+ */
+
+/**
+ * ProfilerSimpleUDP class, that sends out messages for 'udpprofile' daemon
+ * (the one from mediawiki/trunk/udpprofile SVN )
+ * @ingroup Profiler
+ */
+class ProfilerSimpleUDP extends ProfilerSimple {
+ public function logData() {
+ global $wgUDPProfilerHost, $wgUDPProfilerPort;
+
+ $this->close();
+
+ if ( isset( $this->mCollated['-total'] ) && $this->mCollated['-total']['real'] < $this->mMinimumTime ) {
+ # Less than minimum, ignore
+ return;
+ }
+
+ $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", $this->getProfileID(),"-",$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);
+ }
+}