반응형
php를 이용하여 페이지나 그림이 gzip으로 압축되었는지 판단하는 방법
1.get_headers 사용
페이지 내용
<?php
ob_start('ob_gzhandler'); // gzip을 켜고 끌면 꺼짐
$data = array(
array('name'=>'one','value'=>1),
array('name'=>'two','value'=>2),
array('name'=>'three','value'=>3)
);
header('content-type:application/json');
echo json_encode($data);
?>
get_headers를 사용하여 gzip 압축 사용 여부 판단
<?php
$url = 'http://www.example.com/';
var_dump(check_gzip($url));
/**
* url이 gzip으로 압축되었는지 판단하기
* @param String $url 출처
* @param Boolean
*/
function check_gzip($url){
$header = get_headers($url, 1);
if(isset($header['Vary']) && $header['Vary']=='Accept-Encoding'){
return true;
}
return false;
}
?>
테스트 결과:
ob_gzhandler가 추가되면 true, 삭제하면 false로 돌아갑니다.
2.curl
<?php
header('content-type:image/jpeg');
ob_start('ob_gzhandler'); // gzip을 켜고 끌면 꺼짐
echo file_get_contents('test.jpg');
?>
curl을 사용하여 gzip 압축 사용 여부 판단
<?php
$url = 'http://www.example.com/';
var_dump(check_gzip($url));
/**
* url이 gzip으로 압축되었는지 판단하기
* @param String $url 출처
* @param Boolean
*/
function check_gzip($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1); //header 정보 출력
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 반환된 정보는 직접 출력되지 않습니다
curl_setopt($ch, CURLOPT_ENCODING, ''); // 인코딩 형식 제한 없음
$response = curl_exec($ch);
if(!curl_errno($ch)){
$info = curl_getinfo($ch);
// header 가져오기
$header_size = $info['header_size'];
$header_str = substr($response, 0, $header_size);
$filter = array("\r\n", "\r");
$header_str = str_replace($filter, PHP_EOL, $header_str);
// 检查content-encoding
preg_match('/Content-Encoding: (.*)\s/i', $header_str, $matches);
if(isset($matches[1]) && $matches[1]=='gzip'){
return true;
}
}
return false;
}
?>
테스트 결과:
ob_gzhandler가 추가되면 true, 삭제하면 false로 돌아갑니다
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php가 ffmpeg를 호출하여 비디오 정보를 가져옵니다 (0) | 2022.09.05 |
---|---|
php 자급자족 id를 기반으로 고유 번호 클래스 만들기 (0) | 2022.09.05 |
php 함수는 가변 수량의 인자를 사용합니다 (0) | 2022.08.26 |
php 비디오 정보를 얻기 위해 fpmpeg 호출 (0) | 2022.08.26 |
php 여러 개의 1차원 숫자를 조합하여 2차원 배열로 만드는 방법 (0) | 2022.08.25 |