fsockopen 응답 지연 문제에 대해 문의드립니다. 채택완료
A서버와 B서버 두개의 서버가 존재합니다.
A서버에 [가]계정, [나]계정을 만들고
B서버에 [다]계정을 생성하였습니다.
[가] 계정에서 [나] 계정으로 fsockopen 접속을 시도하면 응답시간이 10초이상 소요됩니다.
[가] 계정에서 [다] 계정으로 fsockopen 접속을 시도하면 응답시간이 0.1초로 바로 웹 페이지가 뜹니다.
어느 부분에서 차이가 나는건지 모르겠어서요.
A서버는 php스쿨의 가상서버를 이용하여 구현하였고
B서버는 무료호스팅인 닷홈서버를 이용하였습니다.
가상서버의 호스트 주소 때문에 문제가 발생하는건지..
속 시원한 답변 부탁드립니다.
만약 A서버의 [가] 계정에서 [나] 계정으로 접속하여 관련 정보를 수집하기위해 fsockopen 보다 빠르고
안전한 방법이 있다면 알려 주시면 감사드리겠습니다.
</p><div class="container"><div class="line number1 index0 alt2"><code class="php keyword">function</code> <code class="php plain">GetWeb(</code><code class="php variable">$domain</code><code class="php plain">, </code><code class="php variable">$url</code><code class="php plain">){</code></div><div class="line number2 index1 alt1"> </div><div class="line number3 index2 alt2"><code class="php variable">$fp</code> <code class="php plain">= </code><code class="php functions">fsockopen</code><code class="php plain">(</code><code class="php variable">$domain</code><code class="php plain">, 80);</code></div><div class="line number4 index3 alt1"> </div><div class="line number5 index4 alt2"><code class="php variable">$sendData</code><code class="php plain">=</code><code class="php string">"GET "</code><code class="php plain">.</code><code class="php variable">$url</code><code class="php plain">.</code><code class="php string">" HTTP/1.1\r\nHost:"</code><code class="php plain">.</code><code class="php variable">$domain</code><code class="php plain">.</code><code class="php string">"\r\n\r\n"</code><code class="php plain">;</code></div><div class="line number6 index5 alt1"> </div><div class="line number7 index6 alt2"><code class="php plain">fwrite(</code><code class="php variable">$fp</code><code class="php plain">, </code><code class="php variable">$sendData</code><code class="php plain">);</code></div><div class="line number8 index7 alt1"> </div><div class="line number9 index8 alt2"><code class="php keyword">while</code><code class="php plain">(!</code><code class="php functions">feof</code><code class="php plain">(</code><code class="php variable">$fp</code><code class="php plain">)){</code></div><div class="line number10 index9 alt1"> </div><div class="line number11 index10 alt2"><code class="php variable">$getdata</code> <code class="php plain">.= </code><code class="php functions">fgets</code><code class="php plain">(</code><code class="php variable">$fp</code><code class="php plain">, 1024);</code></div><div class="line number12 index11 alt1"> </div><div class="line number13 index12 alt2"><code class="php plain">}</code></div><div class="line number14 index13 alt1"> </div><div class="line number15 index14 alt2"><code class="php plain">fclose(</code><code class="php variable">$fp</code><code class="php plain">);</code></div><div class="line number16 index15 alt1"> </div><div class="line number17 index16 alt2"><code class="php variable">$getdata_arr</code> <code class="php plain">= </code><code class="php functions">explode</code><code class="php plain">(</code><code class="php string">"\r\n\r\n"</code><code class="php plain">, </code><code class="php variable">$getdata</code><code class="php plain">);</code></div><div class="line number18 index17 alt1"><code class="php spaces"> </code> </div><div class="line number19 index18 alt2"> </div><div class="line number20 index19 alt1"><code class="php comments">//이때 $getdata_arr의 [0]은 Header부분 [1]이 Body부분입니다.</code></div><div class="line number21 index20 alt2"> </div><div class="line number22 index21 alt1"><code class="php keyword">return</code> <code class="php variable">$getdata_arr</code><code class="php plain">[1];</code></div><div class="line number23 index22 alt2"> </div><div class="line number24 index23 alt1"><code class="php plain">}</code></div><div class="line number25 index24 alt2"> </div><div class="line number26 index25 alt1"><code class="php keyword">function</code> <code class="php plain">get_userinfo(</code><code class="php variable">$id</code><code class="php plain">)</code></div><div class="line number27 index26 alt2"><code class="php plain">{</code></div><div class="line number28 index27 alt1"><code class="php spaces"> </code><code class="php variable">$res</code> <code class="php plain">= GetWeb(</code><code class="php string">"도메인주소"</code><code class="php plain">, </code><code class="php string">"/res.php?userid="</code><code class="php plain">.</code><code class="php variable">$id</code><code class="php plain">);</code></div><div class="line number29 index28 alt2"><code class="php spaces"> </code><code class="php variable">$res</code> <code class="php plain">= </code><code class="php functions">explode</code><code class="php plain">(</code><code class="php string">';'</code><code class="php plain">, </code><code class="php variable">$res</code><code class="php plain">);</code></div><div class="line number30 index29 alt1"><code class="php spaces"> </code><code class="php variable">$userinfo</code> <code class="php plain">= </code><code class="php keyword">array</code><code class="php plain">(</code></div><div class="line number31 index30 alt2"><code class="php spaces"> </code><code class="php string">'code'</code> <code class="php plain">=> </code><code class="php variable">$res</code><code class="php plain">[0], </code><code class="php comments">// 결과코드</code></div><div class="line number32 index31 alt1"><code class="php spaces"> </code><code class="php string">'set_date'</code> <code class="php plain">=> </code><code class="php variable">$res</code><code class="php plain">[1], </code><code class="php comments">// 설치일</code></div><div class="line number33 index32 alt2"><code class="php spaces"> </code><code class="php string">'up_date'</code> <code class="php plain">=> </code><code class="php variable">$res</code><code class="php plain">[2], </code><code class="php comments">// 시작일</code></div><div class="line number34 index33 alt1"><code class="php spaces"> </code><code class="php string">'end_date'</code> <code class="php plain">=> </code><code class="php variable">$res</code><code class="php plain">[3], </code><code class="php comments">// 죵료일</code></div><div class="line number35 index34 alt2"><code class="php spaces"> </code><code class="php string">'lastetime'</code> <code class="php plain">=> </code><code class="php variable">$res</code><code class="php plain">[4], </code><code class="php comments">// 남은일수</code></div><div class="line number36 index35 alt1"><code class="php spaces"> </code><code class="php plain">);</code></div><div class="line number37 index36 alt2"><code class="php spaces"> </code> </div><div class="line number38 index37 alt1"><code class="php spaces"> </code><code class="php keyword">return</code> <code class="php variable">$userinfo</code><code class="php plain">;</code></div><div class="line number39 index38 alt2"><code class="php plain">}</code></div><div class="line number40 index39 alt1"> </div><div class="line number41 index40 alt2"><code class="php comments">//사용예시</code></div><div class="line number42 index41 alt1"><code class="php variable">$payninfo</code> <code class="php plain">= get_userinfo(</code><code class="php string">"orderpay"</code><code class="php plain">);</code></div><div class="line number43 index42 alt2"><code class="php functions">echo</code> <code class="php variable">$payninfo</code><code class="php plain">[</code><code class="php string">'code'</code><code class="php plain">] . </code><code class="php string">""</code><code class="php plain">;</code></div><div class="line number44 index43 alt1"><code class="php functions">echo</code> <code class="php variable">$payninfo</code><code class="php plain">[</code><code class="php string">'set_date'</code><code class="php plain">] . </code><code class="php string">""</code><code class="php plain">;</code></div><div class="line number45 index44 alt2"><code class="php functions">echo</code> <code class="php variable">$payninfo</code><code class="php plain">[</code><code class="php string">'up_date'</code><code class="php plain">] . </code><code class="php string">""</code><code class="php plain">;</code></div><div class="line number46 index45 alt1"><code class="php functions">echo</code> <code class="php variable">$payninfo</code><code class="php plain">[</code><code class="php string">'end_date'</code><code class="php plain">] . </code><code class="php string">""</code><code class="php plain">;</code></div><div class="line number47 index46 alt2"><code class="php functions">echo</code> <code class="php variable">$payninfo</code><code class="php plain">[</code><code class="php string">'lastetime'</code><code class="php plain">] . </code><code class="php string">""</code><code class="php plain">;</code></div></div><p>
답변 2개
fsocketopen php내장함수가 느린게 아니라..."도메인주소"에 해당하는 서버가 느린거겠죠...
B서버([다] 계정 userid) 는 접속량이 얼마 없어서 빠른거고,
A서버([나] 계정 userid) 는 접속량이 많든지.. 그런 케이스 아닌가요?
res.php파일내에 db에서 사용자 사용기간정보 불러오는 거 같은데...
A서버에서 htop등의 명령어로.. DB부하(res.php관련)라든지..서버 cpu등등 점검해보셔야 할듯~~
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
B서버는 이용자가 많겠죠 무료호스팅이라