예제 #1
0
 static function runner_json($info, $checkt, $offset = -1)
 {
     if (ctype_digit($checkt)) {
         $logfn = self::runner_logfile($info, $checkt);
     } else {
         if (preg_match(',\\.(\\d+)\\.log(?:\\.lock|\\.pid)?\\z,', $checkt, $m)) {
             $logfn = $checkt;
             $checkt = $m[1];
         } else {
             return false;
         }
     }
     $data = @file_get_contents($logfn, false, null, $offset);
     if ($data === false) {
         return (object) array("error" => true, "message" => "No such log");
     }
     // Fix up $data if it is not valid UTF-8.
     if (!is_valid_utf8($data)) {
         $data = UnicodeHelper::utf8_truncate_invalid($data);
         if (!is_valid_utf8($data)) {
             $data = UnicodeHelper::utf8_replace_invalid($data);
         }
     }
     $json = self::runner_generic_json($info, $checkt);
     $json->data = $data;
     $json->offset = max($offset, 0);
     $json->lastoffset = $json->offset + strlen($data);
     self::runner_status_json($info, $checkt, $json);
     return $json;
 }