2012-08-10 2 views
0

안녕하세요 제가 구현 한 혜성 (롱 폴링 요청) 기본 응용 프로그램에 아파치에 의해 적시에 허용되지 않습니다 내 응용 프로그램 젠드 프레임 워크를 사용다른 요청은</p> <p>내 PHP 코드는 다음과 같습니다 인해 내 응용 프로그램 업데이트 내용이 서버 응답을 기반으로 혜성 구현

ini_set('set_time_limit', 300); 
//get zend session object 
$myNamespace = new Zend_Session_Namespace(); 
//get zend_auth object 
$auth=Zend_Auth::getInstance(); 
$requestTime=time(); 
$response=array(); 
$response["returnvalue"]="invalid"; 
//check for new event on server for 240 seconds else send response 
do{ 
    //call_function return true or false 
    $query=$this->call_function($auth->getIdentity()->user_id,$auth->getIdentity()->lastViewedTime); 
//some code here 
if(!$query){ 
    //sleep for some time; 
    sleep(60); 
}else{ 
    //send response to server when something new has occured 
      $lastViewed=round(microtime(true) * 1000); 
      $user=$auth->getStorage()->read(); 
      $user->lastViewedTime=$lastViewed; 
      $auth->getStorage()->write($user); 
    $response["returnvalue"]="valid"; 
    break; 
} 
}while(true && (time()-$requestTime)<240); 
header("Content-Type: application/json"); 
echo json_encode($response);exit; 

내 자바 스크립트 코드는

var counter = { 
'poll' : function() { 
    $.ajax({ 
     type: "GET", 
     url: '/long-polling', 
     data:"a=b", 
     dataType:"json", 
     async:true, 
     success:function(response){ 
      counter.update(response); 
     }, 
     error: function(XMLHttpRequest,textStatus){ 
      alert("This Operation Could not be Completed. Please check your Internet Connection and try Again. If problem persists please contact Support"); 
     } 
    }); 

}, 
'update' : function(json) { 
    alert(json.data); 
    counter.poll(); 
} 
}; 
$(document).ready(function(){ 
    counter.poll(); 
}); 

내 아파치 구성이

입니다 블록은 5 분

어떤 suggetions이 때까지 요청/서버가 응답하지 않습니다 6,

Timeout 300 
KeepAlive On 
MaxKeepAliveRequests 100 
KeepAliveTimeout 240 
MaxClients 150 
MaxRequestsPerChild 4 

롱 폴링은 잘 작동하지만, 브라우저는 서버에서 다른 요소, 이미지를로드하기 위해 다른 요청을 보낼 때 문제는?

+0

세션을 사용하고 있습니까? –

+0

그래, 내가 세션을 사용합니다 @ 페카 –

+0

당신은 코드에 표시되지 않습니다, 당신이 그것을 수정해야합니다 - 아마 당신의 문제 : 각 요청에 대한 PHP/아파치 차단?] (http://stackoverflow.com/q/430750) –

답변

0

세션이 내 문제는 고맙습니다. Zend_Session :: writeClose (true)를 추가하여 해결했습니다.