본문으로 이동

미디어위키 1.45 안정화가 거의 끝났습니다. 다만 Flow 확장 기능 관련 이슈가 있어서 대체하는 작업을 수행할 계획입니다.

  1. 큰숲백과:청사진에서 위키 발전의 대략적인 방향성을 제시했습니다. 의견이 있으신 분은 큰숲백과토론:청사진에서 의견을 남겨주시면 좋겠습니다.
  2. 기능상의 오류로 지원하지 않고 있는 기능에 대해서는 큰숲백과토론:이슈 트래커에 요약했습니다. 참고하시기 바랍니다.
  3. 데이터베이스 덤프 받고싶으신 분은 큰숲백과 가입 후에 사용자토론:Bigforest에 의견 남겨주시면 ftp 주소, 계정, 비밀번호를 특수:EmailUser를 통해서 공개할 예정입니다.

작은숲:위키노트/PHP flush

큰숲백과, 나무를 보지 말고 큰 숲을 보라.

PHP flush() 함수는 출력 버퍼에 쌓여있는 내용을 곧바로 전송하는 역할을 한다. 아파치에서 PHP를 동적 모듈(DSO, 동적 공유 객체)로 올려 사용할 때는 아래와 같이 하면 스크립트가 종료하기 전이라도 보내고자 하는 출력값을 보낼 수 있다.

@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);
@ini_set('implicit_flush', 1);
set_time_limit(0);
for ($i = 0; $i < ob_get_level(); $i++) ob_end_flush();
ob_implicit_flush(true);
if (ob_get_level() == 0) ob_start();
echo str_repeat(' ', 4096), PHP_EOL;
for ($i = 0; $i < 10; $i++) {
    echo "TEST!\n";
    ob_flush();
    flush();
    sleep(1);
}

위에 두 줄은 gzip 압축 전송하는 것을 막는 것이다. 압축 전송하면 모든 출력값을 모아서 gzip 압축한 후에 보내기 때문에 출력값을 필요할 때마다 보내려면 gzip 압축을 포기해야 한다. 그런 후 브라우저에 따라 일정 크기 이상이 되지 않으면 처리하지 않는 문제를 피하기 위해 사전에 빈 문자열을 4,000 바이트 이상 보내준다. 그런 후 필요한 출력을 하고 flush() 함수를 써서 출력한 값을 곧바로 전송한다.

참고

이 작은숲 문서의 출처는 위키노트의 위키노트/PHP flush 문서입니다.