'fopen'에 해당되는 글 1건


PHP에서 파일을 cache로 구워서 사용하는 방법


안녕하세요.
고코더 입니다.


접속자가 많은 사이트는
매번 메인페이지의 게시글을 DB로 접속하게 하는 것보단
시간마다 크롬을 돌려 페이지를 구워
HTML로 페이지를 보여주는 방식이 유리합니다.
(접속자가 적으면 오히려 낭비되는 프로세스 일 수도 있습니다)

특히 PHP 홈페이지는 이런 캐시파일을 생생하여
프론트를 노출하는 방식을 많이 씁니다.

그런데 인터넷 상에 간단하게 
페이지를 파일로 굽는 예제가 없어서
한번 남겨봅니다.

▼ 아래 소스를 PHP 서버에서 실행해보세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
ob_start(); // 버퍼링 시작
?>
 
PHP 언어로 캐시 파일을 페이지를 구워보자
<table border="1">
    <Tr>
        <Td> 이름</td>
        <Td> 블로거</td>
        <Td> 홈페이지</td>
    </tr>
    <Tr>
        <Td> 고코더</td>
        <Td> gocoder.tistory.com</td>
        <Td> gocoder.net</td>
    </tr>
</table>
<?
$html = ob_get_contents(); //출력된 데이터를 변수로 담는다                    
 
$handle = fopen("gocoder.html"'w'); //캐시를 담을 페이지 파일을 열고
$result = fwrite($handle$html);    //파일에 내용을 그대로 쓴다.
 
fclose($handle); // 파일 닫기
 
?>
cs


▼ 이렇게 페이지가 캐시로 구워져
gocoder..html로 파일안에 컨텐츠가 채워져 있습니다.




소스 설명



1. 버퍼를 시작하기 
ob_start(); 
-> 해당 시작점 부터 출력된 버퍼를 가져옵니다. 

 2. 출력된 내용을 담기
ob_get_contents(); 
-> start 된 시점부터 출력된 내용을 가져 옵니다.
파일로 구워질 HTML들 입니다.

3. 파일에 쓰는 과정
$handle = fopen("gocoder.html", 'w'); 
-> 캐시를 생성할 파일을 오픈합니다 W는 쓰기 모드 입니다. 
$result = fwrite($handle, $html);    
-> 담아질 내용을 파일에 씁니다. 

가장 간단한 방식으로 구현해보았습니다.
출력된 버퍼를 가져오기 전까지
DB에 연결하여 필요한 데이터를 생성해서
파일에 굽는 방식입니다.

이렇게 하면 매번 DB접속을 필요로 하지 않고
홈페이지를 운영하니 
낭비되는 리소스가 적어집니다..





마무리


사용자가 적은 페이지라면 
버퍼를 만드는 프로세스가 더 낭비가 될 수 있습니다.



댓글을 달아 주세요