2013-10-31 3 views
0

안녕하세요, 저는 PHP와 jquery로 혜성을 구현하려고합니다. 혜성은 모든 페이지로드시 시작됩니다. 그러나 그것은 웹 사이트의 모든 페이지 로딩이 10 초와 같이 매우 느리게되는 원인이됩니다. if ($ elapse> 10)에서 서버에 대한 이전 요청을 기다리고있는 것처럼 보입니다. 아약스 연결이 중단, PHP가 더 이상 실행을 중단해야하지 않는가요? 페이지를 다시로드하는 것이 왜 느려지는지 알기 원하십니까?PHP 혜성 원인 천천히 페이지 리로드

function getPendingCheckin() 
    { 
     ignore_user_abort(false); 
     $iCreatedDate = $this->input->post("iLastCreateDate"); 

     $aCheckin = []; 
     $prev = time(); 
     while(! $aCheckin) 
     { 
      $aCheckin = $this->getData(); 

      if($aCheckin || connection_aborted() == 1) 
      { 
       break; 
      } 
      else 
      { 
       sleep(1); 
       $elapse = time() - $prev; 
       if($elapse > 10) 
       { 
        die(); 
       } 
      } 
     } 

     header('Content-type: application/json'); 
     echo json_encode($aCheckin); 
    } 

자바 스크립트

 $(window).ready(function(){ 
      var iLastCreateDate = $('#iLastCreateDate').val(); 

      function startGetPendingCheckin() 
      { 
        $.ajax({ 
         type: "POST", 
         url: "/kc/comet/getPendingCheckin", 
         data: 'iLastCreateDate=' + iLastCreateDate, 
         error : function(msg) 
         { 
          //alert("Error get pending checkin"); 
         }, 
         success :function(o) 
         { 
          if(o) 
          { 
           //process data 
          } 

          startGetPendingCheckin(); 
         } 
        }); 
      } 

      startGetPendingCheckin(); 
     }) 

답변

0

아니, PHP를 실행 (항상) 중단되지 않습니다. 나는 무거운 대본에 현지 기계에 runned 주목했다.

세션이 닫히지 않았기 때문에 PHP 스크립트에 대한 2 개의 병렬 요청을 실행하지 못할 수 있습니다. 일반적으로 스크립트가 종료되면 자동으로 닫힙니다. 기본 동작 (잠금 가능 파일의 세션, 수동 닫기 없음)을 사용하면 동일한 사용자로부터 2 개의 동시 요청을받을 수 없습니다. 후자는 전자로 차단되어 종료를 기다립니다.

사용자 권한 부여에 대해 모든 내용을 확인하는 동안 세션을 닫을 수 있습니다.

관련 문제