미채택 완료

fsockopen 응답 지연 문제에 대해 문의드립니다.

2016-09-23 (금) 16:55:48 3,780

A서버와 B서버 두개의 서버가 존재합니다.

A서버에 [가]계정, [나]계정을 만들고
B서버에 [다]계정을 생성하였습니다.

[가] 계정에서 [나] 계정으로 fsockopen 접속을 시도하면 응답시간이 10초이상 소요됩니다.
[가] 계정에서 [다] 계정으로 fsockopen 접속을 시도하면 응답시간이 0.1초로 바로 웹 페이지가 뜹니다.

어느 부분에서 차이가 나는건지 모르겠어서요.

A서버는 php스쿨의 가상서버를 이용하여 구현하였고
B서버는 무료호스팅인 닷홈서버를 이용하였습니다.

가상서버의 호스트 주소 때문에 문제가 발생하는건지..

속 시원한 답변 부탁드립니다.

만약 A서버의 [가] 계정에서 [나] 계정으로 접속하여 관련 정보를 수집하기위해 fsockopen 보다 빠르고
안전한 방법이 있다면 알려 주시면 감사드리겠습니다.

Copy
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:

호환성문제 

2016-09-23 (금) 17:30:50

fsocketopen php내장함수가 느린게 아니라..."도메인주소"에 해당하는 서버가 느린거겠죠... 

B서버([다] 계정 userid) 는 접속량이 얼마 없어서 빠른거고, 

A서버([나] 계정 userid) 는 접속량이 많든지.. 그런 케이스 아닌가요?

res.php파일내에 db에서 사용자 사용기간정보 불러오는 거 같은데... 

A서버에서 htop등의 명령어로.. DB부하(res.php관련)라든지..서버 cpu등등 점검해보셔야 할듯~~

답변에 대한 댓글 1개

A서버는 이용자가 한명도 없구요.
B서버는 이용자가 많겠죠 무료호스팅이라

답변을 작성하려면 로그인이 필요합니다.