PHP에서 클라이언트로 전송되는 바이트 수를 계산할 수 있습니까? 예를 들어, 10MB 파일을 출력하는 경우 10MB가 모두 클라이언트로 전송되었는지 여부를 확인하거나 클라이언트가 전송을 중간에 중단했는지 확인하는 방법이 있습니까? 나는 아파치가 나중에 이것을 기록 할 것이지만, 나는 PHP로 데이터에 접근하고 싶다.PHP - HTTP를 통해 전송 된 바이트 수 결정
6
A
답변
13
ignore_user_abort
및 connection_abort
기능을 살펴보십시오.
11
는 여기에 내가 (감사 검보를)하고 결국 무엇을 :
ignore_user_abort(true);
$handle = fopen($file_path, 'r');
while (! feof($handle)) {
echo fread($handle, 4096);
if (connection_aborted()) {
$transfer_success = false;
$bytes_transferred = ftell($handle);
break;
}
}
fclose($handle);
당신이 그와 같은 진행 막대 또는 무언가를 만들고 싶어? – Natrium
파일을 완전히 다운로드 한 것으로 표시하고 목록에서 제거하기 만하면됩니다. 문제는 file_get_contents() 였고 사용자 중단을 감지하지 못했습니다. fread()를 사용하고 루프 스루 (loop through)를 사용하면 catch하고 ftell()을 사용하여 전송 된 바이트 수를 대략적으로 파악할 수 있습니다. (혼자서 알아 내려고했을 때 게시 한 것에 대해 유감스럽게 생각합니다.) – Jay