programing

사용자가 AJAX 요청이 끝나기 전에 브라우저를 종료하거나 페이지를 변경할 경우 발생하는 현상

css3 2023. 8. 18. 22:50

사용자가 AJAX 요청이 끝나기 전에 브라우저를 종료하거나 페이지를 변경할 경우 발생하는 현상

데이터베이스 유지보수를 위해 php 스크립트를 ajax에서 호출합니다.사용자가 페이지를 닫거나, 다시 누르거나, 링크를 클릭하면 php 스크립트가 완전히 실행됩니까?할 수 있는 방법이 있습니까?

아마도 만약 php 스크립트가 전화를 했다면.exec()메소드 또는 이와 유사한 방식으로 콘솔을 통해 스크립트를 호출합니다.

$ php /var/www/httpdocs/maintenance.php

?

인종 조건입니다.PHP는 Apache가 원격 사용자가 연결을 닫았다고 소리치고 있음을 (일반적으로 출력을 시도할 때) 어느 시점에서 감지합니다.해당 시점에서 원하는 모든 작업이 수행되는지 여부는 코드의 구조에 따라 달라집니다.

스크립트가 자동으로 종료되기 전에 모든 작업이 완료되도록 하려면 연결이 끊긴 후에도 PHP를 계속 실행하는 를 사용합니다.여전히 사용자 max_execution_time 제한 등의 영향을 받지만 연결을 끊었기 때문에 종료되지 않습니다.

사용자 에이전트(브라우저 등)가 요청을 완전히 발송한 경우, 서버는 필요한 모든 것을 갖추고 요청을 완료한 후 응답을 다시 발송하려고 시도합니다.

실제로 이러한 "ping" 동작은 서비스를 따뜻하게 유지하거나 정기적인 유지보수를 수행하는 "심장 박동"과 같은 프로세스에 종종 사용됩니다.

일단 웹 요청이 서버에 도달하면, 사용자가 브라우저를 닫거나 다른 곳으로 이동하는 것은 중요하지 않습니다.서버는 여전히 응답하지만 아무도 응답을 수신하지 않습니다.

설정, 웹 서버, 운영 체제 등에 따라 다릅니다.

일반적으로 요청은 정상적으로 처리되며 응답은 읽지 않습니다.이전에 쓰기가 실패하거나 처리하는 동안 요청이 실패하는 경우가 있습니다.

일단 Ajax 호출이 시작되면, 사용자는 그들이 원하는 것을 자유롭게 할 수 있습니다.페이지를 닫으면 Ajax 통화에서 피드백을 받지 못합니다(있는 경우).

php가 실행을 시작하면 사용자가 창을 닫거나 페이지를 벗어나 탐색하든 상관없이 계속 실행됩니다.

브라우저 상태에 관계없이 php 스크립트가 완료됩니다.php는 서버에서 구문 분석되며, 클라이언트가 아직 열려 있는지 여부는 중요하지 않습니다.

HTTP 요청이 완료된 경우 예, 클라이언트의 컴퓨터가 닫혔더라도 PHP 스크립트가 완전히 실행됩니다.

언급URL : https://stackoverflow.com/questions/8916690/what-happens-if-a-user-exits-the-browser-or-changes-page-before-an-ajax-request