사실상 나스카님과 해뜰녘님의 팁을 정리해서 올리는것 으로 보시면 틀림없을듯 합니다.
요사이 나스카님의 말씀도 있고해서 정리에 대한 강박을 뒤로하고 일단 올려봅니다.
간단한 내용일지 모르겠으나 이런 형태의 구현방법을 찾지 못했고,
단 한 분이라도 필요한 분이 계시다면 충분할것 같습니다.
고수님들께서 보시고 낳은 방법이 있다면 알려주시면 고맙겠습니다.
*글 제목을 상기하시고 아래 과정을 잠간 보시면 무슨일을 하려는지 쉽게 아실 수 있을것입니다.
시작 http://www.sir.co.kr/bbs/tb.php/g4_tiptech/812
과정1 http://www.sir.co.kr/bbs/tb.php/g4_qa/10119
과정2 http://www.sir.co.kr/bbs/tb.php/g4_qa/10352
# 소켓 방식으로의 구현 - 나스카님과 해뜰녘님께서 도와 주셨습니다.
## allow_url_fopen off off 서버환경에서 fsockopen 을 사용한다.
적용예 http://gnusr.com/g4/?ca_id=test
피드백 http://gnusr.com/g4/bbs/tb.php/forum/79
((예제))
################################ 1 ##############################
http://gnusr.com/g4/preload/sock_preload_in.php
-------------------------------
sock_preload_in.php 화일 만들기
-------------------------------
<?
$g4_path = "..";
include_once("$g4_path/common.php");
include_once("$g4[path]/lib/latest.lib.php");
//테스트를 위해 단 하나의 최신글을 불러오는 구문을 작성했다
?>
<?=latest("basic", future, 5, 50);?>
################################ 2 ##############################
http://gnusr.com/g4/preload/sock_preload_exec.php
----------------------------------
sock_preload_exec.php 화일 만들기
----------------------------------
<?//나스카님 소켓 펑션
function geturl($host,$path) {
$contents="";
$fp = @fsockopen($host, 80, &$errno, &$errstr, 5);
if($fp) {
// 소켓을 이용해서 서버에 html 형태로 테이타를 보냄
fputs ($fp, "GET $path HTTP/1.0\nUser-Agent: Mozilla/4.0\nHost: $host\n\n");
while(!feof($fp)) {
$contents .= fgets($fp,1024);
}
fclose($fp);
return $contents;
}
}
//타 계정 임의의 파일 지정가능 (테스트를 위해 같은 계정내 파일을 지정함)
$htmls=geturl("gnusr.com","/g4/preload/sock_preload_in.php");//실행시킬 파일 지정
//해뜰녘님 헤더자르기
$htmls = trim(substr($htmls,strpos($htmls, "\r\n\r\n")));
echo $htmls;//실제 적용시에는 보여줄 필요가 없으며 주석처리해야한다
//해뜰녘님 결과값 저장
$fp=fopen('/web2/gnusr/www.gnusr.com/g4/preload/sock_preload_out.php','w');
fputs($fp,$htmls);
fclose($fp);
?>
################################ 3 ##############################
http://gnusr.com/g4/preload/sock_preload_out.php
--------------------------------
sock_preload_out.php 화일 만들기
--------------------------------
빈 화일 만들고 퍼미션 707로 설정해준다.
############################### 응용 ##############################
## 1,2,3번의 링크된 경로를 확인해보면 세개의 결과가 똑같아 보인다.
# 1번의 경우는 구문에 따라 실행된것
# 2번의 경우는 1번화일을 소켓으로 읽어들인후 헤더를 잘라내고 나머지 본문을 보여주는것
# 3번의 경우는 2번화일이 호출될때 1번화일의 결과값을 html로 저장해둔것을 보여주는것
> 속도는 3 >1 >2 와 같을것이고,
> 이것을 다수의 최신글이나 디비쿼리를 동반하는 카테고리 메뉴등이 집합된 메인페이지에 적용하려는 것이다.
>> 간단한 응용방법
>> bbs폴더의 코멘트를 포함한 쓰기,수정,삭제등을 담당하는 화일을 열어'// 사용자 코드 실행'을 검색후
>> 바로 아래줄에 2번 화일을 인클루드 한다.
>> // 사용자 코드 실행
>> @include_once ("../../preload/_preload_exec.php"); // 경로수정
>> 메인 페이지의 원하는 부분에 3번 화일을 인클루드 한다.
>>> 결국 방문자의 메인 페이지 접근시 미리 저장된 3번 화일의 내용을 쿼리없이 빠르게 보여주며,
>>> 게시물의 실질적 내용이 바뀌는 이벤트가 일어날때에만 3번 화일의 내용을 갱신해주는 것이다.
# 추가로 allow_url_fopen on on 환경이라면 fopen 방식을 사용해도 된다.
<?
ini_set("allow_url_fopen","1");
function readURL($url) {
$fp = fopen($url,"rb");
$file = $fp;
settype($file, boolean);
if ($file) {
while (!feof($fp)) {
$tmp = fgets($fp, 1024);
$temp .= $tmp;
}
fclose($fp);
} else {
$temp = "";
}
return $temp;
}
$url = "http://~/preload_in.php";
$data = readURL($url);
$fn = "http://~/preload_out.php";
$fd = fopen($fn, "w");
fwrite($fd, $data);
fclose($fd);
ini_set("allow_url_fopen","0");
?>
요사이 나스카님의 말씀도 있고해서 정리에 대한 강박을 뒤로하고 일단 올려봅니다.
간단한 내용일지 모르겠으나 이런 형태의 구현방법을 찾지 못했고,
단 한 분이라도 필요한 분이 계시다면 충분할것 같습니다.
고수님들께서 보시고 낳은 방법이 있다면 알려주시면 고맙겠습니다.
*글 제목을 상기하시고 아래 과정을 잠간 보시면 무슨일을 하려는지 쉽게 아실 수 있을것입니다.
시작 http://www.sir.co.kr/bbs/tb.php/g4_tiptech/812
과정1 http://www.sir.co.kr/bbs/tb.php/g4_qa/10119
과정2 http://www.sir.co.kr/bbs/tb.php/g4_qa/10352
# 소켓 방식으로의 구현 - 나스카님과 해뜰녘님께서 도와 주셨습니다.
## allow_url_fopen off off 서버환경에서 fsockopen 을 사용한다.
적용예 http://gnusr.com/g4/?ca_id=test
피드백 http://gnusr.com/g4/bbs/tb.php/forum/79
((예제))
################################ 1 ##############################
http://gnusr.com/g4/preload/sock_preload_in.php
-------------------------------
sock_preload_in.php 화일 만들기
-------------------------------
<?
$g4_path = "..";
include_once("$g4_path/common.php");
include_once("$g4[path]/lib/latest.lib.php");
//테스트를 위해 단 하나의 최신글을 불러오는 구문을 작성했다
?>
<?=latest("basic", future, 5, 50);?>
################################ 2 ##############################
http://gnusr.com/g4/preload/sock_preload_exec.php
----------------------------------
sock_preload_exec.php 화일 만들기
----------------------------------
<?//나스카님 소켓 펑션
function geturl($host,$path) {
$contents="";
$fp = @fsockopen($host, 80, &$errno, &$errstr, 5);
if($fp) {
// 소켓을 이용해서 서버에 html 형태로 테이타를 보냄
fputs ($fp, "GET $path HTTP/1.0\nUser-Agent: Mozilla/4.0\nHost: $host\n\n");
while(!feof($fp)) {
$contents .= fgets($fp,1024);
}
fclose($fp);
return $contents;
}
}
//타 계정 임의의 파일 지정가능 (테스트를 위해 같은 계정내 파일을 지정함)
$htmls=geturl("gnusr.com","/g4/preload/sock_preload_in.php");//실행시킬 파일 지정
//해뜰녘님 헤더자르기
$htmls = trim(substr($htmls,strpos($htmls, "\r\n\r\n")));
echo $htmls;//실제 적용시에는 보여줄 필요가 없으며 주석처리해야한다
//해뜰녘님 결과값 저장
$fp=fopen('/web2/gnusr/www.gnusr.com/g4/preload/sock_preload_out.php','w');
fputs($fp,$htmls);
fclose($fp);
?>
################################ 3 ##############################
http://gnusr.com/g4/preload/sock_preload_out.php
--------------------------------
sock_preload_out.php 화일 만들기
--------------------------------
빈 화일 만들고 퍼미션 707로 설정해준다.
############################### 응용 ##############################
## 1,2,3번의 링크된 경로를 확인해보면 세개의 결과가 똑같아 보인다.
# 1번의 경우는 구문에 따라 실행된것
# 2번의 경우는 1번화일을 소켓으로 읽어들인후 헤더를 잘라내고 나머지 본문을 보여주는것
# 3번의 경우는 2번화일이 호출될때 1번화일의 결과값을 html로 저장해둔것을 보여주는것
> 속도는 3 >1 >2 와 같을것이고,
> 이것을 다수의 최신글이나 디비쿼리를 동반하는 카테고리 메뉴등이 집합된 메인페이지에 적용하려는 것이다.
>> 간단한 응용방법
>> bbs폴더의 코멘트를 포함한 쓰기,수정,삭제등을 담당하는 화일을 열어'// 사용자 코드 실행'을 검색후
>> 바로 아래줄에 2번 화일을 인클루드 한다.
>> // 사용자 코드 실행
>> @include_once ("../../preload/_preload_exec.php"); // 경로수정
>> 메인 페이지의 원하는 부분에 3번 화일을 인클루드 한다.
>>> 결국 방문자의 메인 페이지 접근시 미리 저장된 3번 화일의 내용을 쿼리없이 빠르게 보여주며,
>>> 게시물의 실질적 내용이 바뀌는 이벤트가 일어날때에만 3번 화일의 내용을 갱신해주는 것이다.
# 추가로 allow_url_fopen on on 환경이라면 fopen 방식을 사용해도 된다.
<?
ini_set("allow_url_fopen","1");
function readURL($url) {
$fp = fopen($url,"rb");
$file = $fp;
settype($file, boolean);
if ($file) {
while (!feof($fp)) {
$tmp = fgets($fp, 1024);
$temp .= $tmp;
}
fclose($fp);
} else {
$temp = "";
}
return $temp;
}
$url = "http://~/preload_in.php";
$data = readURL($url);
$fn = "http://~/preload_out.php";
$fd = fopen($fn, "w");
fwrite($fd, $data);
fclose($fd);
ini_set("allow_url_fopen","0");
?>
댓글 18개
추억만들기
19년 전
원래 이넘은 표준말 밖에 모른다고 전해드리랍니다......
아무것도 모르는 상태라 헤롱합니다......^^
일단 배움의 모드로 가야할 것 같습니다.....
행복한 오후 되십시오~~~홍홍~*
아무것도 모르는 상태라 헤롱합니다......^^
일단 배움의 모드로 가야할 것 같습니다.....
행복한 오후 되십시오~~~홍홍~*
게시글 목록
| 번호 | 제목 |
|---|---|
| 1795 | |
| 1789 | |
| 1785 | |
| 1784 | |
| 1783 | |
| 1774 | |
| 1758 | |
| 1743 | |
| 1730 | |
| 1727 | |
| 1718 | |
| 1709 | |
| 1691 | |
| 1690 | |
| 1679 | |
| 1673 | |
| 1660 | |
| 1645 | |
| 1636 | |
| 1633 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기