2012-07-21 4 views
0

Analytics 애플리케이션을 구축 중입니다. 다른 소스에서 데이터를 가져 오는 동안 사용자가 30 초 동안 기다린 후 사용자에게 표시하기 전에 몇 가지 계산을 수행해야합니다.PHP가 백그라운드에서 데이터를 가져 오는 중

데이터를 가져 오는 동안 30 초 동안 페이지를로드하지 않고 백그라운드에서 데이터를 가져 오는 동안 사용자에게 대기중인 페이지를 표시 할 수있는 방법이 있습니까?

어떻게 할 수 있습니까?

답변

1

참고 : 라이트를 들어, 라이트 박스 JS

 <script> 
    function onload_wating() 
    { 
    var syncronize_target=SITE_URL+'your_controllername/action_timer/'; 

    $.lightbox(syncronize_target, { 
       width : 450, 
       height : 260, 
       'modal' : true, 
       'onOpen' : function() {  
        $(".jquery-lightbox-button-close").css({"visibility":"hidden","display":"none"}); 
       } 
      }); 
     } 

    onload_wating(); 
    <script> 

action_timer.ctp

주를 포함 할 필요가 : 카운트 다운를 들어, JQuery와 카운트 다운을 포함 할 필요가 ->http://keith-wood.name/countdown.html

 <script> 
    $(function() {  
     $('#syncronize_header_timer').countdown(
       { 
       until:+50, 
       format: 'MS', 
       onExpiry: ltliftOff 
       }); 
    }); 

     function ltliftOff() { 

      $.lightbox().close(); 
     } 

    <script> 
<div id="syncronize_header_timer" ></div> 

==========================

위의 하중 _wating()이 함수는 lightbox를 열고 controller 액션을 url로 보내고 action_timer.ctp를 열어 action_timer.ctp를 엽니 다. 우리는 action_timer.ctp에 count30 timer를 사용합니다. 이 타이머는 50으로 계산되고 자동으로 닫힙니다.

이 50 초 사이에 데이터베이스에서 ur 데이터를 검색 할 수 있습니다.

1

한 가지 방법은 AJAX를 사용하여 HTTP GET 요청을 사용하여 서버의 페이지를 폴링하는 것입니다.

우리가 여기에 파일 업로드에 대해 이야기하지 않을 때문에이 세션이 APC_UPLOAD_PROGRESS보다 더 좋은 옵션이 될 수 있습니다

당신은 데이터베이스 또는 더 나은 APC

편집을 사용할 수 있습니다. 세션은 여기에 이상적이어야하는 사용자 저장소별로 제공되며 어쨌든 APC와 같은 다른 상점에서 지원할 수 있습니다.

+0

예 내가 가져온 데이터 –

+1

을 표시하기 전에 데이터베이스에 저장하는 데이터입니다. 많은 양의 트래픽이있는 경우 데이터베이스가 폴링 메커니즘을위한 백엔드를 배치하기 가장 좋은 장소가 아닐 수도 있습니다. APC는 웹 서버에 메모리 상주하므로 성능면에서 더 우수해야하지만, 부하가 적 으면 DB가 정상적으로 작동해야합니다. – quickshiftin

+0

나는 그것을 조사 할 것이다. 이것은 공유 서버에서 작동하지 않습니까? –

관련 문제