제가 header()의 문제를 해결하려는 것은 아니지만 프로그램에 이 요구 사항을 충족하는 함수가 있다는 점에 유의하세요.
오히려 헤더를 보내서 탐지할 수 있을지, 아니면 쿠키를 설정할 수 있을지 고민해봤습니다(동일한 사실입니다). 그러나 PHP에는 출력 버퍼링 메커니즘이 있어 이 접근 방식이 작동하지 않는다고 합니다. 이 메커니즘을 무자비하게 끄면 예상치 못한 다른 문제가 발생할 수 있고 모든 환경을 끌 수는 없기 때문입니다.
작동하더라도 쿠키는 항상 느리고 설정 후 즉시 얻을 수 없습니다. 헤더를 보내면 http 헤더에 쓸모없는 내용이 섞여 있게 됩니다.
그거요. . .
이 요구 사항을 충족할 수 있는 방법이 있나요?
(프로그램의 다른 부분의 코드를 수정하고 싶지 않습니다)
제가 header()의 문제를 해결하려는 것은 아니지만 프로그램에 이 요구 사항을 충족하는 함수가 있다는 점에 유의하세요.
오히려 헤더를 보내서 탐지할 수 있을지, 아니면 쿠키를 설정할 수 있을지 고민해봤습니다(동일한 사실입니다). 그러나 PHP에는 출력 버퍼링 메커니즘이 있어 이 접근 방식이 작동하지 않는다고 합니다. 이 메커니즘을 무자비하게 끄면 다른 예상치 못한 문제가 발생할 수 있고 모든 환경을 끌 수는 없기 때문입니다.
작동하더라도 쿠키가 항상 느리고 설정 후 즉시 얻을 수 없습니다. 헤더를 보내면 http 헤더에 쓸모없는 내용이 섞여 있게 됩니다.
그거요. . .
이 요구 사항을 충족할 수 있는 방법이 있나요?
(프로그램의 다른 부분의 코드를 수정하고 싶지 않습니다)
headers_sent()
을 사용하여 헤더가 전송되었는지 확인하면 요구 사항을 충족할 수 있습니까? 내용이 출력되었다면 헤더가 전송되어야 합니다.
PHP의 출력 메커니즘은 echo
과 같은 명령어를 사용한 직후에 출력하지 않고 먼저 내용의 이 부분을 버퍼에 넣습니다. (소위 버퍼는 공유 메모리의 일부입니다.) 메모리가 가득 차거나 스크립트가 종료되면 PHP는 출력을 위해 이 메모리를 nginx 또는 apache에 전달합니다.
따라서 요구 사항을 충족하려면 버퍼에 콘텐츠가 있는지 확인하기만 하면 됩니다.
php는 ob_get_contents