현재 위치: > 최신 기사 목록> stream_set_write_buffer를 사용하여 쓰기 캐시 크기를 조정하는 방법? PHP 샘플 설명

stream_set_write_buffer를 사용하여 쓰기 캐시 크기를 조정하는 방법? PHP 샘플 설명

gitbox 2025-08-14

php에서 stream_set_write_buffer는 열린 파일 또는 네트워크 연결에 대한 쓰기 캐시의 크기를 설정할 수있는 매우 유용한 기능입니다. 이 기능을 사용하면 특히 큰 파일 처리, 네트워크 요청 등과 같은 많은 양의 데이터 작성이 자주 발생할 때 쓰기 성능을 최적화 할 수 있습니다.

stream_set_write_buffer 란 무엇입니까?

stream_set_write_buffer 는 스트림의 쓰기 버퍼 크기를 설정하는 PHP의 스트림 작동 함수입니다. 스트림은 기본적으로 PHP의 파일 또는 네트워크 연결이며 스트림을 통해 데이터를 읽고 작성할 수 있습니다. 이 기능을 사용하면 버퍼 크기를 지정할 수 있습니다. 데이터를 작성할 때 PHP는 먼저 데이터를 버퍼에 작성한 다음 블록으로 실제 대상 (예 : 파일 또는 네트워크 연결)에 작성합니다.

문법

 <span><span><span class="hljs-title function_ invoke__">stream_set_write_buffer</span></span><span>(resource </span><span><span class="hljs-variable">$stream</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$buffer</span></span><span>);
</span></span>

매개 변수 :

  • $ stream : 파일 스트림, 소켓 스트림 등이 될 수있는 오픈 스트림 자원을 지정합니다.

  • $ 버퍼 : 버퍼의 크기를 바이트로 지정합니다. 0으로 설정하면 버퍼가 비활성화되고 데이터는 대상 스트림에 직접 기록됩니다.

반품 값 :

부울 가치를 반환한다는 것은 진정한 성공을 의미하며, 잘못된 것은 실패를 의미합니다.

쓰기 버퍼를 조정하는 이유는 무엇입니까?

일부 시나리오에서 PHP의 기본 버퍼 크기는 특히 많은 양의 데이터를 처리 할 때 성능 요구 사항을 충족하지 못할 수 있습니다. 버퍼 크기를 올바르게 조정하면 쓰기 수를 줄이고 I/O 운영을 줄여 성능이 향상 될 수 있습니다.

예를 들어, 많은 양의 데이터를 파일에 작성하고 각 쓰기에 디스크 I/O 작업이 필요하면 성능 병목 현상이 발생할 수 있습니다. 버퍼 크기를 늘리면 PHP는 메모리에 데이터를 일시적으로 저장하여 디스크 작업 수를 줄여 쓰기 속도가 증가합니다.

예 : stream_set_write_buffer를 사용하여 캐시 크기를 조정하십시오

다음은 Stream_set_write_buffer를 사용하여 쓰기 캐시 크기를 설정하는 방법을 보여주는 간단한 PHP 예입니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 글을 쓰는 파일을 엽니 다</span></span><span>
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'large_file.txt'</span></span><span>, </span><span><span class="hljs-string">'w'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file</span></span><span>) {
    </span><span><span class="hljs-comment">// 쓰기 캐시 크기를 설정하십시오 1MB</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">stream_set_write_buffer</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-number">1024</span></span><span> * </span><span><span class="hljs-number">1024</span></span><span>);

    </span><span><span class="hljs-comment">// 많은 양의 데이터를 작성하십시오</span></span><span>
    </span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> &lt; </span><span><span class="hljs-number">10000</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
        </span><span><span class="hljs-title function_ invoke__">fwrite</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-string">"This is line number <span class="hljs-subst">$i</span></span></span><span>\n");
    }

    </span><span><span class="hljs-comment">// 파일 스트림을 닫습니다</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Data written successfully!"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Unable to open file!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

이 예에서는 쓰기 작업을 위해 bight_file.txt 파일을 열고 쓰기 버퍼 크기를 1MB (예 : 1024 * 1024 바이트)로 설정합니다. 이러한 방식으로 설정함으로써 PHP는 먼저 데이터를 작성할 때 메모리 버퍼에 데이터를 저장하여 디스크 쓰기 수를 줄여 성능을 향상시킵니다.

주목해야 할 것

  1. 버퍼 크기를 적당히 조정 : 버퍼 크기를 늘리면 쓰기 효율이 향상 될 수 있지만 과도한 버퍼링은 특히 메모리가 작은 환경에서 과도한 메모리 사용을 초래할 수 있습니다. 실제 조건에 따라 조정해야합니다.

  2. 닫기 버퍼 : $ 버퍼가 0으로 설정되면 PHP는 쓰기 캐시를 비활성화합니다. 이 작업은 대상 스트림에 데이터를 직접 작성하지만 쓰기 당 I/O 작동을 증가 시키며 성능 요구 사항이 높지 않은 일부 시나리오에 적합합니다.

  3. 읽기 캐시로 작업 : 동시에 읽기 성능을 최적화 해야하는 경우 Stream_set_Read_Buffer를 사용하여 읽기 버퍼의 크기를 조정하여 성능 최적화 결과를 향상시킬 수 있습니다.

결론적으로

Stream_set_write_buffer 는 PHP에서 강력한 스트림 작동 기능입니다. 쓰기 캐시의 크기를 합리적으로 설정함으로써 파일 또는 네트워크 스트림 쓰기의 성능을 효과적으로 향상시킬 수 있습니다. 다량의 데이터를 처리 할 때는 쓰기 버퍼 크기를 최적화하는 것이 응용 프로그램 성능을 향상시키는 중요한 수단 중 하나입니다. 그것을 사용할 때는 특정 시나리오 요구 사항에 따라 적절한 버퍼 크기를 조정하여 최상의 성능 균형을 달성하십시오.