2011-04-06 3 views
0

저는 아약스를 처음 사용했지만 잠시 동안 PHP를 사용해 왔습니다. 나는이 두 가지를 결합하는 방법에 대해 궁금합니다.PHP 변수를 얻기위한 PHP AJAX 스크립팅

내 웹 사이트에 여러 번의 반복 및 많은 기능을 수행하는 PHP 스크립트가 있습니다.

어떻게 든 스크립트의 위치를 ​​알려주는 아약스 스크립트처럼 개발하고 싶습니다. 스크립트에는 진행률 측정기와 같은 변수가 하나 있습니다. 어떻게 든 변수가 바뀔 때마다 텍스트가 변경되기를 원합니다.

어떻게 가능합니까?

도움을 주시면 대단히 감사하겠습니다.

답변

1

파일, 램 캐시 또는 데이터베이스에 현재 진행률 상태를 저장하고이 상태를 반환하는 다른 스크립트를 작성할 수 있습니다. 그런 다음이 정보를 검색 한 AJAX를 구현 한 다음 진행이 완료 될 때까지 새로운 Ajax 요청을 시작합니다. AJAX를 사용하여 "오래 지속되는 HTTP 연결"과 같은 것을 제안합니다. 귀하의 아약스 요청에 상태를 전달하고 PHP에서 진행 상황이 변경되지 않을 때까지 그냥 잠든다. 이처럼

(%의 상태) :

AJAX request: progress.php?state=0 
AJAX response: state: 10 
AJAX request: progress.php?state=10 
-- on server side it is still 10%, so sleep the php progress until it changes and then reply 
AJAX response: state: 11 
.... 

그리고 아약스 요청에 대한 시간 제한이 있기 때문에 단지 새로운 요청을 시작

한 번 요청 시간이 초과되었습니다.

나는 그것이 당신이 의미 한 바램입니다.

+0

나는 이것을 제안하려고했다. 나는 데이터베이스에 저장하는 것을 괴롭히지 않을 것이고, 가능하다면 memcache 만 사용하면된다 ($ _SESSION 변수에 저장할 수도있다). 그러나 두 개의 스크립트를 사용하면 처리하기가 훨씬 쉬워집니다. –

+0

세션도 파일에 저장되며 memcache는 메모리/램 캐시입니다. 데이터를 저장하는 방법은 여러 가지가 있으므로 "file, ram, database"라고 썼습니다. ;) – Eliasdx

+0

그래, 나도 동의한다. 거기에 몇 가지 아이디어를 던지면된다. :) –

0

jQuery.ajax() 당신이 원하는 일을 :

게시 데이터를 PHP 스크립트에 다음의 결과를 얻기 :

$.ajax({ 
    url: "progress.php", 
    success: function(response){ 
    $("#results").html(response); 
    } 
}); 

jQuery를 UI도 Progressbar widget있다, 결합하는 현명한 결정이 될 것입니다 양자 모두.

0

아마로드하는 데 시간이 걸리는 서버 측 스크립트에서 측정 된 일련의 접합점에서 증가하는 "보고 변수"를 작성하십시오. 독립적 인 서버 측 AJAX 콜백 메소드를 작성하여보고 변수를 살짝보고 그 번호를 에코합니다. 그것은 클라이언트 측에서 수신되면 DOM과 비올라의 해당 부분을 업데이트합니다. 혼란스럽지 않고 혼란스럽지 않습니다.