コード例 #1
0
ファイル: pinba.php プロジェクト: noony/pinba-pure-php
 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;
 }