작은숲:위키노트/Nginx PHP-FPM 환경에서 flush: 두 판 사이의 차이

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
잔글 (문자열 찾아 바꾸기 - "</source>" 문자열을 "</syntaxhighlight>" 문자열로)
잔글 (→‎top: move articles, replaced: PHPPHP (8))
1번째 줄: 1번째 줄:
[[위키노트:PHP|PHP]]에서 <tt>[[위키노트:PHP flush|flush()]]</tt> 함수를 쓰면 모든 처리가 끝나지 않더라도 출력값을 클라이언트에 전송할 수 있다. 하지만 PHP를 [[위키노트:PHP-FPM]]으로 실행시키고 [[위키노트:아파치|아파치]]나 [[위키노트:Nginx|Nginx]] 같은 [[위키노트:웹 서버|웹 서버]]가 중계하도록 하면 이 방법만으로는 해결할 수 없다. 중간에서 웹 서버가 버퍼링을 해버리기 때문이다. 따라서 출력값을 곧바로 전송하기 위해서는 웹 서버가 버퍼링을 하지 않도록 설정하거나 PHP에서 알려줘야 한다.
[[작은숲:위키노트/PHP|PHP]]에서 <tt>[[작은숲:위키노트/PHP flush|flush()]]</tt> 함수를 쓰면 모든 처리가 끝나지 않더라도 출력값을 클라이언트에 전송할 수 있다. 하지만 PHP를 [[작은숲:위키노트/PHP-FPM]]으로 실행시키고 [[작은숲:위키노트/아파치|아파치]]나 [[작은숲:위키노트/Nginx|Nginx]] 같은 [[작은숲:위키노트/웹 서버|웹 서버]]가 중계하도록 하면 이 방법만으로는 해결할 수 없다. 중간에서 웹 서버가 버퍼링을 해버리기 때문이다. 따라서 출력값을 곧바로 전송하기 위해서는 웹 서버가 버퍼링을 하지 않도록 설정하거나 PHP에서 알려줘야 한다.
[[위키노트:Nginx|Nginx]]의 경우 아래 내용을 설정 파일의 <tt>location</tt> 블럭 등에 추가한다.
[[작은숲:위키노트/Nginx|Nginx]]의 경우 아래 내용을 설정 파일의 <tt>location</tt> 블럭 등에 추가한다.
<syntaxhighlight lang="nginx">
<syntaxhighlight lang="nginx">
gzip off;
gzip off;
9번째 줄: 9번째 줄:
header('X-Accel-Buffering: no');
header('X-Accel-Buffering: no');
</syntaxhighlight>
</syntaxhighlight>
이제 <tt>[[위키노트:PHP flush|flush()]]</tt> 함수로 출력값이 곧바로 보내지는 것을 확인할 수 있을 것이다.
이제 <tt>[[작은숲:위키노트/PHP flush|flush()]]</tt> 함수로 출력값이 곧바로 보내지는 것을 확인할 수 있을 것이다.
== 참고 ==
== 참고 ==
* {{언어|영어}} [http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering Nginx: ngx_http_proxy_module]
* {{언어|영어}} [http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering Nginx: ngx_http_proxy_module]

2022년 5월 7일 (토) 13:31 판

PHP에서 flush() 함수를 쓰면 모든 처리가 끝나지 않더라도 출력값을 클라이언트에 전송할 수 있다. 하지만 PHP를 작은숲:위키노트/PHP-FPM으로 실행시키고 아파치Nginx 같은 웹 서버가 중계하도록 하면 이 방법만으로는 해결할 수 없다. 중간에서 웹 서버가 버퍼링을 해버리기 때문이다. 따라서 출력값을 곧바로 전송하기 위해서는 웹 서버가 버퍼링을 하지 않도록 설정하거나 PHP에서 알려줘야 한다. Nginx의 경우 아래 내용을 설정 파일의 location 블럭 등에 추가한다.

gzip off;
proxy_buffering off;

아니면 PHP 소스에 아래 내용을 추가해 Nginx가 버퍼링을 하지 않도록 알려준다.

header('X-Accel-Buffering: no');

이제 flush() 함수로 출력값이 곧바로 보내지는 것을 확인할 수 있을 것이다.

참고

이 작은숲 문서의 출처는 위키노트의 위키노트/Nginx PHP-FPM 환경에서 flush 문서입니다.