[ 상황 ]
이미지 파일을 xml로 파싱해서 다른 사이트에서 가져왔지만
proxy설정을 해놨기때문에 다른 사이트에서 가져온 이미지 파일을 보여줄때 보안상 막혀있는 사이트이므로 바로 img파일 url을 적용할 수 없음.
따라서, 다른 사이트에서 가져온 이미지파일의 url을 가지고
내 사이트에 저장한 후 다시 가져오도록 수정.
[ TODO ]
1. 88240.tistory.com/img 에서 가져온 이미지 cache/upload에 저장
2. 저장시 cache에 이미 저장되어있는지 확인
1) 저장되있을 경우 : 파일 저장된 날짜 확인
1-1) 파일 날짜 일주일 지났으면 덮어쓰기
1-2) 파일 날짜 일주일 안지났으면 keep
2) 저장 안되있을 시 : 저장
3. cache/upload에서 이미지 파일 불러와 출력되도록 수정
//파일 가져와 저장하는 함수
function get_saveFile($url) {
$imgName_arry = explode("/", $url);
$imgName = $imgName_arry[sizeof($imgName_arry) - 1]; //파일명 가져옴
$cachePath = "../cache/upload/"; //업로드 위치
$Path = $cachePath.$imgName;
//파일이 있는지 확인
if(file_exists($Path)) {
//cache에 파일이 있음
$imgSaveTime = filemtime($Path); //파일 저장된 날짜
$imgCheckTime = $imgSaveTime + ( 60 * 60 * 24 * 7 ); //파일이 저장된 날짜의 일주일 날짜 계산
$now = time(); //현재 시간
if($imgCheckTime <= $now) { //파일 저장된 날짜보다 현재날짜가 더 최근일 경우
$img = file_get_contents($url); //파일을 가져옴
file_put_contents($Path, $img); //덮어쓰기(저장)
}
} else {
//cache에 파일이 없음
$img = file_get_contents($url); //파일을 가져옴
file_put_contents($Path, $img); //저장
}
return $Path; //파일이 cache에 있으면 불러옴
}
$imgUrl = get_saveFile('http://testpage.com/img/imgfile.png');
echo "img src="".$imgUrl."""; //img src="http://88240.tistory.com/cache/upload/imgfile.png"
file_get_contents
: 파일의 정보를 가져온다. 가져올 파일의 전체 URL을 파라미터로 입력
file_put_contents
: 파일을 저장. 저장시 저장하는 경로 + 파일명 + 파일확장자 모두 입력($Path)
저장할 파일입력($img)
filemtime
: 파일을 저장한 날짜를 가져온다. 유닉스 시간으로 가져온다.
* 유닉스 시간 : 1970년 1월 1일 0시 0분 0초를 기준으로 계산. 단위는 초이다.
따라서 $imgSaveTime + ( 60 * 60 * 24 * 7 ) 이와 같이 한이유는
filemtime으로 가져온 유닉스 시간에 60초 * 60분 * 24시간 * 7일(일주일)로 함으로써
일주일 뒤를 계산할 수 있다..