응답 전송 후 PHP 처리 처리
서버에서 메시지 ID와 텍스트가 포함된 요청을 받을 때 스크립트는 정보와 텍스트를 처리해야 하는 경우가 많습니다. 응답을 생성합니다. 그러나 응답을 즉시 보내면 서버 메시지가 배달된 것으로 표시되어 추가 처리가 불가능해질 수 있습니다. 이는 즉각적인 응답 생성이 필요하지만 지속적인 백엔드 작업이 필요한 애플리케이션의 경우 문제가 될 수 있습니다.
해결책: 출력 버퍼링을 사용한 지연 처리
이 문제를 해결하기 위해 알려진 기술 출력 버퍼링을 사용할 수 있습니다. 이 접근 방식에는 다음 단계가 포함됩니다.
-
지연 실행 활성화:
- ignore_user_abort(true)를 호출하여 사용자 작업이 중단되는 것을 방지합니다. script.
- set_time_limit(0)을 설정하여 모든 항목을 제거합니다. 시간 제약.
-
버퍼 응답 출력:
- ob_start()를 사용하여 응답 버퍼링을 시작합니다. 출력.
-
부분 응답 보내기:
- 필요한 데이터를 처리하고 초기 응답을 생성한 후 다음을 사용하여 에코합니다. 에코 $response.
-
출력 헤더 플러시:
-
다음 헤더 보내기:
- Connection: close 응답이 완료된 후 연결이 종료됨을 나타냅니다. 전송됩니다.
- Content-Length: .ob_get_length()`를 사용하여 버퍼링된 출력의 길이를 지정합니다.
-
완전한 응답 전송:
- ob_end_flush() 및 @ob_flush()를 호출하여 버퍼링된 출력을 플러시합니다.
- flush()를 호출하여 나머지 출력을 브라우저로 보냅니다.
- PHP-FPM(PHP > 5.3.3)의 경우 다음을 호출하세요. fastcgi_finish_request()를 사용하여 요청을 완료합니다.
-
계속 처리:
- 이제 스크립트는 응답하는 동안 처리를 계속할 수 있습니다. 으로 전송되고 있습니다. browser.
추가 고려 사항:
- 실행 완료를 보장하려면 die()를 사용하여 스크립트를 명시적으로 종료합니다. 특히 set_time_limit=0을 사용할 때 그렇습니다.
- 이 기술은 스크립트가 백그라운드에서 계속 실행되도록 유지합니다. 서버 리소스를 소모할 수 있습니다.
위 내용은 즉각적인 응답을 보낸 후 백그라운드 PHP 처리를 어떻게 수행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!