다음 코드는 Firefox에서 제대로 실행되지만 Chrome에서는 올바르게 실행되지 않습니다. 나중에 ERR_RESPONSE_HEADERS_TOO_BIG가 표시됩니다. 이 오류는 10000 개가 넘는 항목 (파일)이 포함 된 폴더를 반복 할 때 발생합니다. 긴 작업이어야합니다.크롬에 "ERR_RESPONSE_HEADERS_TOO_BIG"이 표시되는 이유는 무엇입니까?
제발 누구든지이 오류를 방지하는 방법을 설명해 주시겠습니까? ob_end_clean() 후 바로 "echo"하는 경우 오류가 사라집니다. 긴 운영 및 진행 상황을 확인하기위한 다른 요구 중 하나가 병렬 아약스 요청을 차단하기 - 답변 :
를 검색합니다
<?php
ini_set('max_execution_time', 600);
function FileItemsCount($it, &$count_ref)
{
foreach ($it as $file)
{
$count_ref += 1;
ob_start();
session_start();
$_SESSION['progress'] = $count_ref;
session_write_close();
ob_end_clean() ;
$is_folder = $it->hasChildren();
if ($is_folder)
{
FileItemsCount($it->getChildren(), $count_ref);
}
}
}
$dir = "C:/Users/sstefanov/xampp";
$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
$count = 0;
FileItemsCount($it, $count);
echo $count;
?>
내가 너무 많은 데이터가 인쇄되는 경우/서버에서 반향을 발생할 수 있음을 공유하는 것이 유용 할 것이라고 생각 당신이 매번 루프에서 세션을 열고 닫을 때 (그 이유는 어쨌든하고 있습니까?) 그럴 때마다 (?) session_start가 매번 새로운 SetCookie 헤더를 생성 할 수 있기 때문입니다. 따라서 Chrome은 화가납니다. – CBroe
CBroe가 정확합니다. 브라우저에서 허용하는 헤더 수에 크기 제한이 있습니다. 그것은 또한 당신이 만들 수있는 쿠키의 수에 대한 한도를 의미합니다. – DCoder
저는 C++ 프로그래머이고 $ _SESSION [ 'progress'] 변수를 병렬 PHP 프로세스간에 동기화하기 위해 session_start()/session_write_close()를 Enter/Leave critical_section으로 생각합니다. 내가 틀렸을 수도 있지만 PHP에서 다른 방법을 찾을 수 없습니다. – netanalyzer