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개 / 댓글 1개
자체해결
HTTP/1.0\r\nHost:
HTTP/1.1\r\nHost:
호환성문제
fsocketopen php내장함수가 느린게 아니라..."도메인주소"에 해당하는 서버가 느린거겠죠...
B서버([다] 계정 userid) 는 접속량이 얼마 없어서 빠른거고,
A서버([나] 계정 userid) 는 접속량이 많든지.. 그런 케이스 아닌가요?
res.php파일내에 db에서 사용자 사용기간정보 불러오는 거 같은데...
A서버에서 htop등의 명령어로.. DB부하(res.php관련)라든지..서버 cpu등등 점검해보셔야 할듯~~
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.
B서버는 이용자가 많겠죠 무료호스팅이라