/** * Send data via UDP * * @param ProfilerData $data */ public function send(ProfilerData $data) { list($host, $port) = $this->getEndpoint($data->getEngine()); if (!$host || !$port) { return; } $profile = $data->getProfile(); $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); $plength = 0; $packet = ""; foreach ($data->getEntries() as $name => $pfdata) { foreach (array('cpu', 'cpu_sq', 'real', 'real_sq') as $key) { if (!isset($pfdata[$key])) { $pfdata[$key] = -1; } } $pfline = sprintf("%s %s %d %f %f %f %f %s\n", $profile, "-", $pfdata['count'], $pfdata['cpu'], $pfdata['cpu_sq'], $pfdata['real'], $pfdata['real_sq'], $name); $length = strlen($pfline); if ($length + $plength > self::LESS_THAN_MTU) { socket_sendto($sock, $packet, $plength, 0, $host, $port); $packet = ""; $plength = 0; } $packet .= $pfline; $plength += $length; } socket_sendto($sock, $packet, $plength, 0x100, $host, $port); }
/** * Send data via Scribe * * @param ProfilerData $data */ public function send(ProfilerData $data) { if (!$this->checkDependencies()) { return; } $scribeKey = $this->getScribeKey($data->getEngine()); $data = array('time' => microtime(true), 'engine' => $data->getEngine(), 'profile' => $data->getProfile(), 'context' => Transaction::getAttributes(), 'request' => $data->getRequest(), 'entries' => $data->getEntries()); $data = json_encode($data); try { WScribeClient::singleton($scribeKey)->send($data); } catch (TException $e) { Wikia::log(__METHOD__, 'scribeClient exception', $e->getMessage()); } }