2009-10-02 18 views
6

İstemciye iletilen bayt sayısının sayısını öğrenmek PHP'de mümkün müdür? Örneğin, 10 MB'lık bir dosya çıkarıyorsam, 10 MB'lık istemcinin istemciye gönderilip gönderilmediğini veya istemcinin aktarımın kesilmesinin kesintiye uğradığını görmek için bir yol var mı? Apache'nin bunu sonradan kaydedeceğini biliyorum, ancak PHP'deki verilere erişmek istiyorum.PHP - http üzerinden kaç bayt gönderdiğini belirleme

+0

böyle bir progressbar falan yapmak istiyorum? – Natrium

+0

Sadece dosyaları tamamen indirilmiş olarak işaretlemek istedim, sonra bunları bir listeden kaldırın. Sorun file_get_contents() idi, kullanıcı kesintisini yakalamıyor. fread() işlevini kullanırsanız ve döngü geçirirseniz, yakalayabilir ve yaklaşık kaç bayt gönderildiğini anlamak için ftell() öğesini kullanın. (Kendi kendime çözdüğüm zaman soruyu sorduğum için üzgünüm) – Jay

cevap

11

Burada (teşekkürler bamya) yapıyor sona budur:

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); 
+0

Bu hala bunu yapmanın yolu mu? – Brad

+0

Yup. Yeterince iyi çalışıyor. Niye ya? – Jay

+0

API istek indirmelerini veri aktarım miktarına göre sınırlamak istiyorum. Kod için teşekkürler. – Brad

İlgili konular