2011-11-16 2 views
0

안녕하세요, 저는 광고를 위해 서버를 제출하는 웹 사이트를 만들고 있습니다. 사용자가 내 웹 사이트의 인덱스 페이지로 이동하는 경우는 제출 된 모든 서버의 IP의를 잡고 다음과 같이)은 온라인 (는 fsockopen 사용하고 있는지 확인하기 위해 테스트 :이 방법은 잘 작동PHP : 다중 fsockopen()을 만드는 가장 효율적인 방법; 사이?

while($row = mysql_fetch_assoc($rs)) { 

    $ip = $row['ip']; 

    $info = @fsockopen($ip, 25565, $errno, $errstr, 0.5); 

    if($info) { 
    $status = "<div><img width='32px' height='32px' 
      title='$name is online!' src='images/online.png'/></div>"; 

    $online = true; 

    } else { 

    $status = "<div><img width='32px' height='32px' 
      title='$name is offline!' src='images/offline.png'/></div>"; 

    $online = false; 
    } 

} 

} 

하지만, 단점은 사이트를로드 할 때 fsockopen() 메서드가 호출되어 웹 사이트로드를 시작하는 데 2-4 초가 걸리는 것입니다. 웹 사이트가로드되기 전에 대기 시간을 줄이는 더 좋은 방법이 있는지 알고 싶습니다.

감사합니다. 감사합니다.

답변

1

온라인 상태와 마지막 검사 시간을 데이터베이스에 저장합니다. 예를 들어 마지막 검사 시간이 15 분을 초과하면 업데이트하십시오. 모든 pageload에서 상태를 확인할 필요가 없다고 확신합니까? 웹 사이트 속도를 늦추는 각 서버에 연결하는 데 걸리는 시간입니다.

그런 다음 다시 웹 사이트를 방문한 사람이 서버 상태를 업데이트하는 대신에 업데이트 프로세스를 cronjob으로 옮길 수 있습니다.

+0

그래, 나는 내 웹 사이트의 다른 부분에 대해서도 크론 작업을 조사하고 있었지만 atm에있는 호스팅 계획은 크론 작업을 지원하지 않습니다. 내가 그들을 업그레이 드해야합니다. 또한 당신의 제안에 감사 드리며, 시도는 더 좋은 생각처럼 보일 것입니다. –

0

예를 보면 모든 $ 상태 비트를 자바 스크립트로 호출하여 개별 서버를 검사하는 다른 PHP 페이지로 만들 수 있습니다.

그러나 상태 검사를 cron 작업으로 이동하거나 일종의 상태 캐싱을 사용하는 것이 좋습니다. 저장소 상태가 만료 된 것 (만료 된 시간 제한) 만 확인하십시오.

관련 문제