fsockopen 응답 지연 문제에 대해 문의드립니다.
본문
A서버와 B서버 두개의 서버가 존재합니다.
A서버에 [가]계정, [나]계정을 만들고
B서버에 [다]계정을 생성하였습니다.
[가] 계정에서 [나] 계정으로 fsockopen 접속을 시도하면 응답시간이 10초이상 소요됩니다.
[가] 계정에서 [다] 계정으로 fsockopen 접속을 시도하면 응답시간이 0.1초로 바로 웹 페이지가 뜹니다.
어느 부분에서 차이가 나는건지 모르겠어서요.
A서버는 php스쿨의 가상서버를 이용하여 구현하였고
B서버는 무료호스팅인 닷홈서버를 이용하였습니다.
가상서버의 호스트 주소 때문에 문제가 발생하는건지..
속 시원한 답변 부탁드립니다.
만약 A서버의 [가] 계정에서 [나] 계정으로 접속하여 관련 정보를 수집하기위해 fsockopen 보다 빠르고
안전한 방법이 있다면 알려 주시면 감사드리겠습니다.
function GetWeb($domain, $url){
$fp = fsockopen($domain, 80);
$sendData="GET ".$url." HTTP/1.1\r\nHost:".$domain."\r\n\r\n";
fwrite($fp, $sendData);
while(!feof($fp)){
$getdata .= fgets($fp, 1024);
}
fclose($fp);
$getdata_arr = explode("\r\n\r\n", $getdata);
//이때 $getdata_arr의 [0]은 Header부분 [1]이 Body부분입니다.
return $getdata_arr[1];
}
function get_userinfo($id)
{
$res = GetWeb("도메인주소", "/res.php?userid=".$id);
$res = explode(';', $res);
$userinfo = array(
'code' => $res[0], // 결과코드
'set_date' => $res[1], // 설치일
'up_date' => $res[2], // 시작일
'end_date' => $res[3], // 죵료일
'lastetime' => $res[4], // 남은일수
);
return $userinfo;
}
//사용예시
$payninfo = get_userinfo("orderpay");
echo $payninfo['code'] . "";
echo $payninfo['set_date'] . "";
echo $payninfo['up_date'] . "";
echo $payninfo['end_date'] . "";
echo $payninfo['lastetime'] . "";
답변 2
fsocketopen php내장함수가 느린게 아니라..."도메인주소"에 해당하는 서버가 느린거겠죠...
B서버([다] 계정 userid) 는 접속량이 얼마 없어서 빠른거고,
A서버([나] 계정 userid) 는 접속량이 많든지.. 그런 케이스 아닌가요?
res.php파일내에 db에서 사용자 사용기간정보 불러오는 거 같은데...
A서버에서 htop등의 명령어로.. DB부하(res.php관련)라든지..서버 cpu등등 점검해보셔야 할듯~~
자체해결
HTTP/1.0\r\nHost:
HTTP/1.1\r\nHost:
호환성문제
답변을 작성하시기 전에 로그인 해주세요.