현재 위치: > 최신 기사 목록> 보다 효율적인 파일 작업을 달성하기 위해 PHP set_file_buffer 및 fopen 함수를 결합하는 방법은 무엇입니까?

보다 효율적인 파일 작업을 달성하기 위해 PHP set_file_buffer 및 fopen 함수를 결합하는 방법은 무엇입니까?

gitbox 2025-09-12
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 이것은 기사의 내용과 관련이 없습니다. PHP 코드 예제</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"환경을 초기화하십시오...\n"</span></span><span>;
</span><span><span class="hljs-variable">$init_time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">microtime</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-variable">$log_file</span></span><span> = </span><span><span class="hljs-string">"init.log"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-variable">$log_file</span></span><span>, </span><span><span class="hljs-string">"초기화가 완료되었습니다: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>, FILE_APPEND);
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1>결합하는 방법 PHP set_file_buffer 그리고 fopen 기능,보다 효율적인 파일 작업을 달성합니다?</h1>

<p>존재하다 PHP 큰 파일을 처리 할 때,文件的读取그리고写入性能往往会成为瓶颈。파일 작동의 효율성을 향상시키기 위해,우리는 결합 할 수 있습니다 <code>fopen

2. set_file_buffer 함수 소개

set_file_buffer 함수는 파일 작동의 버퍼 크기를 설정하는 데 사용됩니다. 기본적으로 PHP에는 파일 작업을위한 내장 버퍼링 메커니즘이 있지만 대형 파일을 처리하거나 자주 읽기 및 쓰기를 자주 할 때 버퍼 크기를 수동으로 조정하면 성능이 크게 향상 될 수 있습니다.

 </span><span><span class="hljs-title function_ invoke__">stream_set_write_buffer</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>, </span><span><span class="hljs-number">8192</span></span><span>); </span><span><span class="hljs-comment">// 버퍼를 설정하십시오 8KB</span></span><span>

버퍼 크기를 합리적으로 설정하면 시스템 호출 수를 줄이고 I/O 간접비를 줄이고 파일 작동 효율을 향상시킬 수 있습니다.

3. 조합 사용 예제

다음은 Fopen을 사용하여 파일을 열고 버퍼를 Set_File_Buffer를 통해 효율적으로 작성하도록 설정하는 방법을 보여주는 완전한 예입니다.

 </span><span><span class="hljs-comment">// 쓰기를 위해 파일을 엽니 다</span></span><span>
</span><span><span class="hljs-variable">$handle</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">$handle</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"파일을 열 수 없습니다"</span></span><span>);
}

</span><span><span class="hljs-comment">// 버퍼 크기를 설정하십시오 16KB</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_set_write_buffer</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>, </span><span><span class="hljs-number">16</span></span><span> * </span><span><span class="hljs-number">1024</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">100000</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">$handle</span></span><span>, </span><span><span class="hljs-string">"이것은 첫 번째입니다 <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">$handle</span></span><span>);

위의 예에서, 버퍼를 16 kb로 설정함으로써, PHP는 FWRRITE가 호출 될 때마다 실제 디스크 쓰기를 수행하지 않지만 먼저 메모리의 데이터를 캐시 한 다음 버퍼 상한에 도달하면 디스크에 쓸 수 있으므로 디스크 I/O 작업의 수를 크게 줄일 수 있습니다.

4. 실용적인 조언
  • 버퍼 크기는 파일 크기와 서버 메모리에 따라 조정해야합니다. 일반적으로 8kb ~ 64 kb는 합리적인 범위입니다.
  • 큰 파일을 작성할 때는 버퍼링 메커니즘을 사용하여 자주 디스크 쓰기를 피하십시오.
  • 읽기 작업의 경우 Stream_set_Read_Buffer를 사용하여 버퍼를 설정하여 읽기 성능을 향상시킬 수도 있습니다.
  • 다중 스레드 또는 동시 쓰기 시나리오에서는 버퍼의 데이터 일관성에주의를 기울여야합니다.

5. 요약

fopenset_file_buffer를 결합하면 PHP 파일 작업의 효율성을 크게 향상시킬 수 있습니다. 버퍼 크기를 합리적으로 설정하고 시스템 통화 수를 줄이면 큰 파일을 처리하거나 고주파 읽기 및 쓰기를 처리 할 때 상당한 성능 향상을 달성 할 수 있습니다. 이러한 기술을 마스터하면 PHP 파일 처리 기능이보다 효율적이고 안정적입니다.