Programming,  컴퓨터와 인터넷

PHP에서 원격 이미지의 유효성을 체크하는 방법

PHP 파일 내부에서 원격 호스트에 위치한 이미지 파일을 가져다가 IMG 태그를 달아서 사용하는 기능이 필요했는데, 링크가 잘못 되었거나 원격 호스트가 응답이 오래 걸리거나 정지 상태라서 이미지를 가지고 오지 못하는 문제가 자주 발생하곤 했다.

원격 호스트에 위치한 이미지 파일이 올바른 경로로 지정되어 있고 실제로 보여질 수 있는 것인지 확인하는 기능을 PHP로 구현하였다.

< ?
function shutdown_connection()
{
global $fp;
socket_shutdown($fp);
fclose($fp);
}
function check_image($url, $timeout = 10)
{
$url_stuff = parse_url($url);
$host_name = $url_stuff[host];
$fp = fsockopen($host_name, 80, $errno, $errstr, 2);
if (!$fp) {
return 0;
} else {
socket_set_timeout($fp, $timeout);
if (fputs($fp, "GET $url HTTP/1.0\n")) {
$res = fread($fp, 1024);
if (stristr($res, "Content-Type: image")) {
return 1;
}
}
fclose($fp);
}
return 0;
}
? >

사용예는 다음과 같다. 타임아웃을 3초로 지정하여 3초 동안 이미지를 가져오지 못하면 0을 반환하고 3초 내에 이미지가 존재함을 확인하면 1을 반환한다.

< ?
if (check_image($image_path, 3) == 1) {
// 이미지 있음
} else {
// 이미지 없음
}
?>

댓글 7개

답글 남기기