php에서 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를 사용하여 쓰기 캐시 크기를 설정하는 방법을 보여주는 간단한 PHP 예입니다.
<span><span><span class="hljs-meta"><?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> < </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">?></span></span><span>
</span></span>이 예에서는 쓰기 작업을 위해 bight_file.txt 파일을 열고 쓰기 버퍼 크기를 1MB (예 : 1024 * 1024 바이트)로 설정합니다. 이러한 방식으로 설정함으로써 PHP는 먼저 데이터를 작성할 때 메모리 버퍼에 데이터를 저장하여 디스크 쓰기 수를 줄여 성능을 향상시킵니다.
버퍼 크기를 적당히 조정 : 버퍼 크기를 늘리면 쓰기 효율이 향상 될 수 있지만 과도한 버퍼링은 특히 메모리가 작은 환경에서 과도한 메모리 사용을 초래할 수 있습니다. 실제 조건에 따라 조정해야합니다.
닫기 버퍼 : $ 버퍼가 0으로 설정되면 PHP는 쓰기 캐시를 비활성화합니다. 이 작업은 대상 스트림에 데이터를 직접 작성하지만 쓰기 당 I/O 작동을 증가 시키며 성능 요구 사항이 높지 않은 일부 시나리오에 적합합니다.
읽기 캐시로 작업 : 동시에 읽기 성능을 최적화 해야하는 경우 Stream_set_Read_Buffer를 사용하여 읽기 버퍼의 크기를 조정하여 성능 최적화 결과를 향상시킬 수 있습니다.
Stream_set_write_buffer 는 PHP에서 강력한 스트림 작동 기능입니다. 쓰기 캐시의 크기를 합리적으로 설정함으로써 파일 또는 네트워크 스트림 쓰기의 성능을 효과적으로 향상시킬 수 있습니다. 다량의 데이터를 처리 할 때는 쓰기 버퍼 크기를 최적화하는 것이 응용 프로그램 성능을 향상시키는 중요한 수단 중 하나입니다. 그것을 사용할 때는 특정 시나리오 요구 사항에 따라 적절한 버퍼 크기를 조정하여 최상의 성능 균형을 달성하십시오.