public static function prepareMessage($struct) { self::$resource = fopen('php://memory', 'wb'); self::stringField(1, $struct['hostname']); self::stringField(2, $struct['server_name']); self::stringField(3, $struct['script_name']); self::integerField(4, 1); self::integerField(5, $struct['doc_size']); self::integerField(6, $struct['memory_peak']); self::floatField(7, $struct['request_time']); self::floatField(8, $struct['ru_utime']); self::floatField(9, $struct['ru_stime']); if (!isset($struct['dictionary'])) { $struct['dictionary'] = array(); } $dictionary = $struct['dictionary']; if (isset($struct['timers'])) { foreach ($struct['timers'] as $timer) { self::integerField(10, 1); self::floatField(11, $timer['value']); $tag_count = 0; foreach ($timer['tags'] as $tagName => $tagValue) { self::integerField(13, $dictionary[$tagName]); self::integerField(14, $dictionary[$tagValue]); ++$tag_count; } // tag_count self::integerField(12, $tag_count); } } foreach ($struct['dictionary'] as $key => $id) { self::stringField(15, $key); } if (is_int($struct['status'])) { self::integerField(16, $struct['status']); } fseek(self::$resource, 0, SEEK_SET); $buffer = stream_get_contents(self::$resource); fclose(self::$resource); return $buffer; }