Safari에서 php 명령 새로 고침이 작동하지 않는 이유는 무엇입니까?
<p>시간이 많이 걸리는 PHP 스크립트가 있어서 사용자에게 피드백을 주고 싶었습니다. 핵심 문제를 해결하려면 단순화하세요. 스크립트는 Firefox에서 완벽하게 작동하지만(출력을 즉시 새로 고침) Safari는 모든 콘텐츠가 생성될 때까지 기다립니다. 왜? 이 문제를 어떻게 해결할 수 있나요? </p>
<pre class="brush:php;toolbar:false;"><?php
ini_set('max_execution_time', 0);
header('콘텐츠 인코딩: 없음;');
header('콘텐츠 유형: 텍스트/html; charset=utf-8');
$j = 8;
$k = pow(2, 10);
echo "잠깐만 기다려 주세요...".str_pad('', $k)."<br />n<br />n"
플러시();
$i = 0;
동안($i < $j) {
$i++;
echo "테스트 ".$i.str_pad('',$k)."<br />n"
플러시();
수면(1);
}
?></pre>
<p>BTW: Chrome에서 이 페이지를 전혀 로드하지 않고 <code>ERR_CONTENT_DECODING_FAILED</code>를 표시합니다. </p>
<p>그리고 저도 넣어보려고</p>
<pre class="brush:php;toolbar:false;"><IfModule mod_env.c>
SetEnv no-gzip 1
</IfModule></pre>
<p> .htaccess에 있지만 운이 없습니다. 또한 <code>SetEnv no-gzip dont-vary</code>를 시도했습니다. Safari(및 Chrome)가 Firefox와 동일한 작업을 수행하도록 하는 방법에 대한 단서가 있습니까? </p>
<시간 />
<p>나는 php.net에서 <code>flush()</code>, <code>ob_flush()</code>, <code>ob_start()</code> 등에 대해 읽었습니다. ., 그리고 지난 20년 이상 동안 플러시에 대한 거의 모든 질문과 Stackoverflow에 대한 모든 댓글을 읽었습니다.
<code>ini_set('output_buffering', 'On');</code> 또는 <code>ini_set('output_buffering', 'Off');</code>를 추가해 보았습니다. ob_start(null,4096장<code>header('X-Content-Type-Options: nosniff');</code> 및/또는<code>header('X-Accel-Buffering: no') ;< /code>. <code>flush();</code> 앞이나 뒤에 <code>@ob_flush();</code>를 넣고 <code>str_pad> 2^16(65,536)으로 증가했지만 도움이 되지 않았습니다.
안타깝게도 내 호스팅 공급자에서는 Apache 서버(PHP 8.1 및 FastCGI 실행)를 제어할 수 없는 것 같습니다. 이제 Firefox에서 작동하므로 뭔가 제대로 하고 있는 것 같습니다. </p>