2011-12-29 4 views
2

컨트롤러에서 호출하는 모델에는 여러 가지 메서드가 있습니다. 클라이언트에서 모델 메서드가 실행되는 동안 진행률 막대를 업데이트하려고합니다.CodeIgniter 및 진행률 막대

컨트롤러와 통신하여 진행 상황을 어떻게 확인할 수 있습니까?

+2

은 어쩌면 내가 뭔가를 놓친거야 ....하지만 난 당신이 요구하는 어떤 단서를 가지고 있지 않습니다. 당신이 무엇을 요구하고 있는지 명확히 설명해 주시겠습니까? –

+0

컨트롤러가 실행되는 동안 클라이언트의 진행률 표시 줄을 업데이트하고 싶다고 생각합니다. –

+0

실제 작업 응용 프로그램을 표시하는 progressBar 구현 방법은 무엇입니까? – systemiv

답변

1

PHP는 서버 측이기 때문에이 작업을 수행 할 수 없으며 작업이 완료되면 결과가 브라우저로 전송됩니다.

JavaScript를 사용하여 AJAX 호출을 할 수 있습니다 (Google은 페이지를 다시로드하지 않고 서버를 호출하는 방법입니다). 그리고 모델의 메소드가 완료 될 때마다 진행 상황에 '로드'를 추가 할 수 있습니다 JS를 사용하여 바. 하지만 실제로 PHP에는 얼마나 많은 액션이 완료되었는지를 알 수있는 방법이 없습니다.

0

Apache와 NGINX를 통한 파일 업로드에는이 작업을 수행하는 방법이 있지만 상황에는 해당되지 않습니다.

AJAX long polling을 사용하면 컨트롤러의 특수 컨트롤러 나 메소드를 모니터링하여 변경 사항이있을 때 프론트 엔드에서 업데이트 및 업데이트를 찾을 수 있습니다.

3

이 작업을 수행하려면 AJAX/long 폴링이 필요합니다. 다음은 XMLHttpRequest2입니다. 그리고 저에게 이것은 웹을 다음 단계로 끌어 들였습니다. 우리가 그것을 사용할 시간이야. 나는 jquery와 함께 사용했다. 아마도 내가 한 일을 더 쉽게 이해할 수있을 것입니다. 제대로 작동하려면 약간의 조정이 필요할 것입니다. 여기 간다 ...

$.ajax({ 
type: 'POST/GET', 
url: "link/to/controller/method", 
data: {whatever = 'foo'}, 
beforeSend: function(XMLHttpRequest) 
{ 
    //Upload progress 
    XMLHttpRequest.upload.addEventListener("progress", function(evt){ 
    if (evt.lengthComputable) { 
    var percentComplete = evt.loaded/evt.total; 
    $(".jquery-uploadbar-selector").progressbar({ value: percentComplete }); //jquery progress bar for upload 
    //incase you wanted an upload bar 
    } 
}, false); 
//Download progress 
XMLHttpRequest.addEventListener("progress", function(evt){ 
    if (evt.lengthComputable) { 
    var percentComplete = evt.loaded/evt.total; 
    $(".jquery-downloadbar-selector").progressbar({ value: percentComplete }); 
    //jquery progress bar for download or in other words The real answer for question 
    } 
}, false); 
}, 
success: function(data){ 
    //Here goes the end of what you have done.. I would just type.. 
    console.log('Yay!! I guess, I ve answered my first bounty question and hoping to see it work well.'); 
} 
}); 

내가 잘못된 곳이다 경우 알려 .. 그것이 작동하는 희망.

0
  1. 클라이언트 열린 HTTP 연결 (사용자)가 당신이 일을 시작할 때 (isWaiting = 1) 클라이언트에 데이터를 보내거나 ASIQ 말했듯이 아약스 폴링을하고 상태를 isWaiting 가져옵니다. HTML 클라이언트 측 페이지, 자바 스크립트
  2. 는 isWaiting = 1
  3. HTML 페이지이 내부 몸체 태그
<div class="overlay" style="display:none;"></div> 

및 CSS

을 갖는 진행 막대를로드한다. 오버레이 {너비 : 100 %; 높이 : 100 %; z- 색인 : 5000; 왼쪽 : 0,/IE/top : 0; 텍스트 정렬 : 가운데; 위치 : 고정; 배경 : url ('https://memberschemes.rics.org/MembersPortal/images/ajax_loader-2.gif') 반복없는 고정 중심; background-color : #EFEFEF; 불투명도 : 0.7; /* 배경 : # F4F4F4; background-repeat : no-repeat; background-position : center; */ }