2011-11-27 5 views
3

나는 내 웹 브라우저에서 시작하는이 PHP 스크립트를 가지고있다. 많은 양의 데이터를 읽고이를 데이터베이스에 씁니다. 내가 브라우저에서 뒤로를 클릭 (또는 다른 링크/페이지로 이동)하면 어떻게 PHP 스크립트가 시작되었습니다. 브라우저에서 다시 클릭하면 어떻게됩니까?

  1. 일어나고?

  2. 웹 브라우저를 닫으시겠습니까? 스크립트가 끝날 때까지 백그라운드에서 실행됩니까? php.ini 파일이 (기본적으로 비활성화)로 설정 ignore_user_abort을 설정하지 않는 한이 완료 될 때까지

답변

8

그것은 계속 실행해야합니다. ignore_user_abort는 기본적으로 비활성화되어 있기 때문에, PHP가 기본 동작은 사용자가 사라진 것을 감지하면 완료되기 전에 스크립트를 종료하는 것입니다. 이를 변경하려면 스크립트 시작 부분에 ignore_user_abort(true);으로 전화하십시오.

즉, 다소 짧은 스크립트에서 PHP는 사용자가 몇 초 전에 연결을 끊어도 처리가 끝날 때까지 사용자가 사라진 것을 감지하지 못할 수 있습니다.

ignore_user_abort()에는 사용자가 연결을 끊어도 계속 실행됨을 보여주는 스크립트 예제가 있습니다.

메모, PHP will not detect that the user has aborted the connection until an attempt is made to send information to the client. Simply using an echo statement does not guarantee that information is sent, seeflush().

세션을 시작한 경우 스크립트가 실행을 마칠 때까지 세션 파일이 닫히지 않고 (잠금이 해제되어) 세션 잠금 시도가 끝날 때까지 동일한 사용자가 세션을 시작하려고 시도 할 수 있습니다. . 이를 방지하려면 오랜 시간 동안 스크립트를 실행하려는 경우 세션 정보가 더 이상 필요하지 않은 경우 session_write_close으로 전화하십시오.

이 참조는 connection handling in php에 관한 것이어야합니다.

+0

답변 해 주셔서 감사합니다. –

+0

우수한 답변 범위 +1 –

관련 문제