2013-07-17 5 views
0

Windows 7 컴퓨터에서 IIS의 테스트 사이트를 실행하고 있습니다.Ajax PHP 배경 요청

서버에 실행 요청을 보냅니다.이 기록을 내 DB에 저장하면 작동하는 것으로 알고 있습니다.

일단 프로세스가 실행되면 페이지에서 벗어나서 스크립트를 실행하고 싶을 것입니다.

현재 스크립트를 시작하고 내비게이션에서 다른 페이지를 선택하면 브라우저가 아약스 요청을 중지하는 것으로 보입니다 (스크립트는 여전히 서버 측을 실행 중입니다).하지만 브라우저가 서버 측 스크립트까지 리디렉션하지 못하게합니다 완료되었습니다. 스크립트를 호출하는 내 jQuery를 파일에서

$.post('path_to_script',{key:val},function(data){}); 

을 내 PHP 스크립트에서 내가 사용하고 있습니다 :

내가 사용하고

ignore_user_abort(true); 
set_time_limit(0); 

나는 다른 게시물에 제안 보았 듯이 여기에.

백그라운드 프로세스를 실행하는 첫 시도이기 때문에 뭔가 빠졌습니까?

+0

이렇게하면 완전히 새로운 정적 페이지로 이동할 수 있습니까? –

+0

일반적으로 해당 페이지에서 스크립트를 실행하는 다른 PHP 페이지가 – timothystringer

답변

1

나는 세션 문제라고 생각합니다. path_to_script 스크립트는 세션을 시작하고 세션을 닫을 때까지 다른 PHP 스크립트가 세션을 열 수 없습니다. 요청을 중단해도 아약스 스크립트가 중단되지는 않으므로 최대한 빨리 세션을 닫는 것이 좋습니다.

+0

감사합니다, 내 PHP 스크립트의 관련 장소에 session_write_close를 추가했습니다. 그걸 수정 한 것 같습니다 :) – timothystringer

0

프런트 엔드 문제입니다. 기본적으로 페이지 언로드에 대한 ajax 요청을 취소해야합니다. PHP 스크립트 자체는 백그라운드에서 계속 실행됩니다.

var ajax_request = $.ajax(...); 
$(window).unload(function() { ajax_request.abort(); }); 
+0

이거나 작동하지 않고 데이터가 너무 크지 않으면 (IE를 지원하는 경우 2000 자 미만이거나 적절한 브라우저의 경우 8000 자 미만) 시도 할 수 있습니다 jsonp 요청 – lePunk

+0

은 버전 1.8에서 depreciated jQuery 함수가 아닌 .unload()입니까? – timothystringer

+0

당신 말이 맞아요, 미안 해요. 너무 자주 사용하는 기능이 아닙니다. window.onunload = function() {ajax_request.abort();}에 대해 어떨까요? } – lePunk