2011-01-19 10 views

답변

20

사실 실제로 좋은 습관입니다. 데이터 전송 속도 향상

+8

정확하게, 어떻게 그것을합니까? 이 대답이 실제로 나를 어떻게 도울까요? –

+0

그는 '' 태그 바로 뒤에 출력 버퍼를 플러시하는 것을 언급했을 수 있습니다. http://developer.yahoo.com/performance/rules.html –

1

만약 내가 자바도이 입출력 버퍼링을 파일 읽기 및 쓰기로 사용하지 않았다면.

10

출력 버퍼링은 나쁜 습관이 아닙니다. 예를 들어 speed up the loading of your website by using GZIP compression 일 수 있습니다 (가능한 경우 .htaccess 내부에서 수행하는 것이 더 좋음).

<?php 
    if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) 
     ob_start("ob_gzhandler"); 
    else 
     ob_start(); 
?> 

단점 : 잘 모르겠습니다. 좋은 질문.

추신 :이 주제에 대한 내용은 output buffering입니다.

+0

실제로 일부 브라우저의 경우 header ('Content-Length :'. ob_get_length()); 텍스트를 보낸 후, 그렇지 않으면 올바르게 디코딩하지 못할 수 있습니다. 일부 고대 브라우저의 경우에는 여전히 퍼센트가 있습니다. – kos

+0

맞을 수도 있습니다. 정보 주셔서 감사합니다 :) – Alfred

7

프로그램 효율성을 위해 출력 버퍼 캡처가 나쁘지 않습니다. 이것은 PHP의 유용한 기능입니다. 그러나 다른 방법으로 더 잘 수행 할 수 있습니다. 코드 냄새는 문제가 될 수 있으므로 문제가 더 명확하고 명확한 해결책이 아닌지 확인하십시오.

+4

코드의 냄새는 무엇입니까?를 참조하십시오. :) – Alex

+2

다른 (때로는 더 큰) 문제를 일으키는 문제. 이 경우 잘못된 해결책을 사용하여 문제를 해결하십시오. 자세한 내용은 http://www.codinghorror.com/blog/2006/05/code-smells.html – Jonah

12

출력 버퍼링은 거의 필수 사항입니다. PHP를 사용하여 사용자에게 뭔가를 출력하면 헤더가 전송됩니다. 따라서 페이지를 처리하는 과정을 중간에 지나친다면 버퍼링이 켜져 있지 않으면 헤더가 전송되어야합니다. 그렇지 않으면 두려운 "헤더 정보를 수정할 수 없습니다 - 이미 보낸 헤더"가 나타납니다.

일부 사람들은 그렇게 코딩하면 안된다고 말합니다. 내가 말하는 humbug!

버퍼를 켜면 코드가보다 유연해질 수 있습니다.

+4

+1 for humbug :) humbug의 경우 – Magicode

+0

+2) –

4

나쁜 (또는 좋은) 것으로 간주되지 않습니다. 어떤 사람들은 그것을 좋아하지 만, 어떤 사람들은 그렇지 않다. 개인적으로 나는 그것을 사용하지 않을 이유가 있다고 생각한다. 나는 최후의 수단으로 생각한다. 때로는 출력 버퍼링이 특정 문제를 해결하기위한 유일한 선택 일 수있는 상황이있을 수 있으므로 이러한 상황에서만이 옵션을 저장하십시오.

성능 향상이나 사용 속도가 빨라 졌다고 생각하지 않지만 사용하는 서버와 PHP를 mod_php 또는 cgi 또는 fastcgi로 사용하는 경우에도 다릅니다.

2

출력 버퍼링의 주요 단점은 버퍼 스택의 깊이를 알지 못하는 것입니다. 과도하게 공격적인 오류 처리 또는 예기치 않게 종료/종료되는 서브 루틴과 결합하면 버퍼에있는 내용을 잃어 버리므로 진행 상황에 대한 단서가 남지 않습니다.

예를 들어 젠드 프레임 워크는 거의 모든 것에 대해 출력 버퍼링을 사용하지만 치명적인 오류가 발생하면 메시지를 인쇄하고 즉시 종료합니다. 유용한 디버깅 정보가 손실됩니다.

1

확실하게 출력 버퍼링이란 브라우저에 즉시 전송되었을 수있는 콘텐츠가 서버에 고착되어 여분의 메모리 (높은 확장 성을 처리하는 경우 매우 중요한 문제)가 발생하므로 사용자가 프로그램이 실행되는 데 시간이 걸리면이 메모리 오버 헤드로 인해 성능이 저하됩니다.

필자는 PHP가 사실인지 또는 버퍼링을 사용하지 않을 때 메모리를 비우는지를 잘 모릅니다.하지만 대개는 이론입니다.

관련 문제