2013-05-02 3 views
2

페이지를 방문 할 때 내 서버의 CPU 전원이 열려있는 모든 탭이 11 %/100 % 사용 중일 때 다른 11 %입니다. 여기AJAX는 CPU 사용량이 많습니까?

function ajaxFunction(){ 
    var ajaxRequest; // The variable that makes Ajax possible! 

    try{ 
     // Opera 8.0+, Firefox, Safari 
     ajaxRequest = new XMLHttpRequest(); 
    } catch (e){ 
     // Internet Explorer Browsers 
     try{ 
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try{ 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e){ 
       // Something went wrong 
       alert("Your browser broke!"); 
       return false; 
      } 
     } 
    } 
    // Create a function that will receive data sent from the server 
    ajaxRequest.onreadystatechange = function(){ 
     if(ajaxRequest.readyState == 4){ 
      var ajaxDisplay = document.getElementById('pop'); 
      ajaxDisplay.innerHTML = "Population: " + ajaxRequest.responseText; 
     } 
    } 
    ajaxRequest.open("GET", "count.php", true); 
    ajaxRequest.send(); 
} 

그리고 PHP 코드 :

<?php 
$con = @mysql_connect("31.xx.x.xxx","xxxxxxxx","xxxxxxxxxxxx"); 
if (!$con) 
    { 
    echo('?'); 
    } 
@mysql_select_db("archstud_db", $con); 
$result=mysql_query("SELECT * FROM chars"); 
$num=mysql_num_rows($result); 
$num = $num; 
echo $num; 

@mysql_close($con); 
?> 

나는 또한 setInterval을을 (사용하고) 내 JScript를 가진 창로드와 JScript의 상쾌한하여 setInterval 기능을 시작 여기 내 JScript를위한 코드입니다 6 초마다.

CPU 사용량이 너무 많습니까? 또한 어떻게 해결합니까?

+1

확인'COUNT (*)'MySQL의 기능 :

빠른 해결 방법은 다음과 같다. PS :'$ num = $ num;'o_O – zerkms

+0

MySQL 문은 제쳐 놓고 불평하고, 나는 당신이 setInterval()과 관련이있는 문제를 추측하고 있습니다. 어쩌면 기능을 계속해서 또 다시 호출 할 수 있을까요? –

+0

답변에 대한 댓글에서 요청했습니다. setInterval을 볼 수 있을까요? –

답변

-2

아직도 더 이상 사용되지 않는 라이브러리 (mysql)를 사용하고 계십니까?

인덱스에 대해 들어 봤어 - "SELECT * FROM chars"가 문제의 원인이 될 수 있습니다.

왜 6 초마다 새로 고침을하고 있습니까?

+0

누군가가 테이블에서 모든 항목을 선택하려고하면 색인이 도움이되지 않습니다 (정의 기준). 대답이 아닙니다. – zerkms

+0

@zerkms - 성능이 엉망이 될 것입니다. –

+1

인덱스가 어떻게 작동하는지 완전히 이해하고 있습니까? 그렇다면 인덱스가 SELECT * FROM tbl 쿼리 (테이블에서 모든 것을 검색해야한다고 가정)에 도움이되는 방법을 설명해 주시겠습니까? – zerkms

-1

Ajax는 클라이언트 측에서 발생하기 때문에 Ajax 문제라고 생각하지 않습니다. 귀하가 말했듯이 서버의 CPU가 과부하 상태입니다. 우선,이 쿼리를 실행하기 위해 MySQL에 걸리는 시간을 확인하십시오. Javascript 코드가 6 초 간격으로 실행되며 각 요청에 대해 새로운 스레드가 생성되기 때문에 MySQL에 대한 각 연결과 PHP 스크립트 실행이 CPU를 약간 소모하므로 이전 요청 전에 seccond 탭을 열면 완료되면이 두 번째 연결 CPU 사용량이 첫 번째 연결에 추가됩니다.

1

OP가 코드의 중요한 부분을 붙여 넣지 않았으며이를 확인하라는 요청이 성공적이지 않아 합당한 설명으로 추측 해보고 백업해야합니다. 그의 서버의 CPU가 과부하되고 있습니다. 즉, 무슨 일이 일어나 든간에 서버에 막대한 양의 시간이 소요됩니다. 우리는 또한 모든 탭이 로컬에 11 %를 추가한다는 것을 알고 있습니다. 즉 브라우저에서 엄청난 양의 것을 처리하고 있습니다.

OP는 setInterval에 대해 설명했습니다. 나는 그가 어딘가에 다음과 같은 라인을 가지고 있다고 확신 할 준비가되어있다 :

setInterval(ajaxFunction, 6); 

6 초마다 핑 소리를 낼 수있다. 사실, 페이지를 동결하지 않고 서버 측 및 클라이언트 측로드를 설명하는 밀리 초 6 개를 핑합니다.

setInterval(ajaxFunction, 6000); 
관련 문제