2013-09-04 2 views
0

나는 게임 서버가 온라인인지 오프라인인지 보여주는 웹 사이트 (PHP에서)를하고있다.
나는 무언가를 알아낼 수 있었고 작동하도록했습니다.
그러나 문제는 여러 서버가 오프라인 상태 일 때 웹 사이트를로드하는 데 10-20 초가 걸리는 것입니다.나는 스크립트를하고 있지만 페이지 로딩에 문제가있다.

로드는 서버가 온라인 즉시합니다.

서버가 오프라인 인 경우에도 웹 사이트를 즉시로드 할 수있는 방법이 있습니까?

이 주요 기능이다. (나머지는의 IP의 서버 이름입니다.)

function pingDomain($domain){ 

    global $sport, $lport, $port, $l1, $l2; 

    if ($domain == $l1){ 
     $port = $lport; 
    } 
    else if ($domain == $l2){ 
     $port = $lport; 
    } 
    else{ 
     $port = $sport; 
    } 

    $starttime = microtime(true); 
    $file  = @fsockopen($domain, $port, $errno, $errstr, 1); 
    $stoptime = microtime(true); 
    $status = 0; 

    if (!$file) $status = -1; // Site is down 
    else { 
     fclose($file); 
     $status = ($stoptime - $starttime) * 1000; 
     $status = floor($status); 
    } 
    return $status; 
} 
+2

아마도 이것은 서버가 오프라인이라고 말할 때까지 기다려야하기 때문일 수 있습니다. 아마도 AJAX 호출로 확인하는 것이 좋을 것입니다. 오프라인 서버가 확인되는 동안로드 GIF 또는 무언가를 표시 할 수 있으며, 온라인 서버는 빠르게 표시됩니다. – Naryl

+0

ajax를 사용하십시오. 페이지를 시작하고로드가 완료되면 비동기 아약스 호출이 시작됩니다. 그들이 끝나면 페이지의 서버 상태를 새로 고칩니다. –

+0

그것은 저를 귀찮게하지 않았지만 비슷한 웹 사이트에는이 문제가 없다는 것을 알았습니다 ... 그리고 나는 그들이 어떻게했는지에 관해서 fighure 할 수 없습니다. 당신이 AJAX 방식이 마음에 들지 및/또는 다른 서비스가 AJAX없이 즉시이를 발견하는 경우 – user2745790

답변

0

서버에서 cron 작업을 확인하고이 코드를 1 분마다 실행 한 후 데이터베이스에 결과를 저장합니다. 라이브 웹 사이트는 데이터베이스에서 서버 상태를 빠르게로드 할 수 있으며 페이지 새로 고침을 피하기 위해 ajax를 사용할 수도 있습니다.

+0

나는 cron 작업/mysql 방법을 사용했으며 완벽하게 작동합니다 ... 모든 도움을 주신 분들께 감사드립니다. – user2745790

관련 문제