Safari에서 php 명령 새로 고침이 작동하지 않는 이유는 무엇입니까?
P粉141925181
P粉141925181 2023-09-04 18:39:18
0
2
669
<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>
P粉141925181
P粉141925181

모든 응답(2)
P粉684720851

hareth py 덕분에 답을 찾았어요!

으아악

$j를 200으로 늘리고 수면 시간을 0.1초로 줄였습니다. Safari는 약간 느리게 반응하지만 결국에는 한 줄씩 표시됩니다. 파이어폭스와 크롬처럼요.

P粉762447363

편집자:
ob_start("ob_gzhandler") 압축된 웹 페이지를 지원하는 웹 브라우저에 gz로 인코딩된 데이터를 보내는 데 도움이 되는 ob_start()에 대한 콜백 함수로 사용됩니다. 출처

으아악

출력(Chrome에서):

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿