Skip to content
Snippets Groups Projects

Resolve "use multi curl to improve performance"

Merged Ghost User requested to merge 19-use-multi-curl-to-improve-performance into master
1 file
+ 7
7
Compare changes
  • Side-by-side
  • Inline
+ 57
0
<?php
namespace app\Models;
class HttpParser
{
public static function parseHeader($headerPart, $path = "") {
$headerLine = explode("\r\n", $headerPart);
$httpcode = rtrim($headerLine[0]);
$httpcode = explode(" ", $httpcode);
$header['http_code'] = $httpcode[1];
foreach($headerLine as $line) {
if(stripos($line, ": ")) {
$tmp = explode(": ", $line);
$header[strtolower($tmp[0])] = $tmp[1];
}
}
if(!isset($header['content-type'])) {
if(substr($path, -4) === '.css') {
$header['content-type'] = 'text/css';
} elseif(substr($path, -3) === '.js') {
$header['content-type'] = 'text/javascript';
} elseif(substr($path, -4) === '.svg') {
$header['content-type'] = 'image/svg+xml';
} else {
$header['content-type'] = 'application/octet-stream';
}
}
return $header;
}
public static function parse($htmldoc, $path = "") {
try{
$parts = explode("\r\n\r\n", $htmldoc);
$regex = "/^HTTP/sm";
$i = 0;
while($i < count($parts)){
if(!preg_match($regex ,$parts[$i])){
break;
}
$i++;
}
$out['header'] = self::parseHeader($parts[$i-1], $path);
$out['data'] = implode(array_slice($parts,$i));
unset($out['header']['content-encoding']);
unset($out['header']['content-length']);
unset($out['header']['x-frame-options']);
return $out;
} catch(\Exception $e) {
$out['header']['http_code'] = 200;
$out['header']['content-type'] = "text/html";
$out['data'] = 'no-result';
return $out;
}
}
}
\ No newline at end of file
Loading