<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">"이 기사를 읽을 수 있습니다!<br>"</span></span><span>;
</span><span><span class="hljs-variable">$time_start</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-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 텍스트를 시작하십시오</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h1>fgetss큰 파일을 처리 할 때는 말더듬됩니다?성능을 최적화하는 몇 가지 방법을 가르쳐주십시오</h1>"</span></span><span>;
</span><span><span class="hljs-comment">// 소개</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>존재하다PHP개발 중,fgetss함수는 종종 파일에서 라인별로 컨텐츠 라인을 읽고 제거하는 데 사용됩니다.HTML상표,但존재하다处理大文件时,많은 개발자들이 명백한 지연에 직면 할 것입니다。이 기사는 지연의 원인을 분석합니다,성능을 최적화하는 몇 가지 방법을 제공합니다。</p>"</span></span><span>;
</span><span><span class="hljs-comment">// 하나、이해하다fgetss작동 방식</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h2>하나、이해하다fgetss작동 방식</h2>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>fgetss기능의 핵심은 파일 콘텐츠를 라인별로 읽는 것입니다.,동시에 제거하십시오HTML그리고PHP상표。파일이 큰 경우,각 전화fgetss都需要执行字符串解析그리고상표过滤,이것은 상당한 성능 오버 헤드를 가져옵니다。</p>"</span></span><span>;
</span><span><span class="hljs-comment">// 둘、큰 파일이 말더듬의 이유</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h2>둘、큰 파일이 말더듬의 이유</h2>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> <span class="hljs-string">"<ul>
<li><strong>너무 큰 파일:</strong>하나次性读取整个文件会占用大量内存。</li>
<li><strong>자주I/O작동하다:</strong>매번fgetss모든 통화는 하드 디스크에 액세스해야합니다,I/O성능 병목 현상입니다。</li>
<li><strong>상표解析开销:</strong>fgetss구문 분석하고 제거합니다HTML상표,这존재하다大文本中耗时明显。</li>
</ul>"</span>;
</span><span><span class="hljs-comment">// 삼、최적화 방법</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h2>삼、최적화 방법</h2>"</span></span><span>;
</span><span><span class="hljs-comment">// 방법1:사용fgets+strip_tags대안fgetss</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h3>1. 사용 <code>fgets "; // 방법 2 : 버퍼를 늘리십시오
에코 " FGETSS는 최대 읽기 길이를 지정할 수 있으며 버퍼를 합리적으로 설정할 수 있습니다.
" ; 에코 "
\ $ buffersize = 8192; // 기본값은 4096입니다.
while (! feof (\ $ hands)) {
\ $ line = fgetss (\ $ 핸들, \ $ buffersize);
// 프로세스 \ $ line
}
fclose (\ $ 핸들);
" ; // 메소드 3 : 블록별로 파일 읽기
에코 " 초대형 파일의 경우 고정 바이트 블록을 한 번에 읽어 I/O 시간의 수를 줄일 수 있습니다.
" ; 에코 "
\ $ handle = fopen ( 'margefile.txt', 'r');
\ $ chunksize = 16384;
while (! feof (\ $ hands)) {
\ $ chunk = fread (\ $ 핸들, \ $ chunksize);
\ $ CleanChunk = strip_tags (\ $ chunk);
// process \ $ cleenchunk
}
fclose (\ $ 핸들);
" ; // 메소드 4 : 생성기를 사용하여 메모리 효율성을 향상시킵니다.
에코 " 생성기는 전체 파일을 한 번에로드하지 않고 읽고 처리 할 수 있습니다.
" ; 에코 "
함수 readfilelines (\ $ 파일) {
\ $ handle = fopen (\ $ 파일, 'r');
if (! \ $ hands) 반환;
while (! feof (\ $ hands)) {
수율 strip_tags (fgets (\ $ 핸들));
}
fclose (\ $ 핸들);
}
foreach (readfilelines ( 'margefile.txt') as \ $ line) {
// 프로세스 \ $ line
}
" ; // 요약
에코 " FGETS+Strip_tags를 사용하고, 버퍼를 늘리거나, 블록별로 읽거나, 발전기를 사용하거나, 생성기를 사용하여 성능을 크게 향상시킬 수 있도록 가장 적합한 방법을 선택할 수 있도록 가장 적절한 방법을 선택할 수 있습니다
. ?>