Bir dosya indirme seçeneği ile bir web sitesi var. Ancak herkes her dosyayı indirmek için izin verilir. Örneğin ben yönetici olarak oturum halinde tüm dosyaları indirebilirsiniz, ama ben bir müşteri olarak oturum ise sadece belirli dosyaları indirebilirsiniz.
Kullanıcılar elle indirebilirsiniz edemez bu yüzden şu anda tüm bu dosyaları, web kök dışında bir dizinde saklanır. Ben dosyaların indirilmesini yönetmek için bir PHP komut dosyası yapılmış, ama çok adamcağız. Ben birkaç şey denedim:
1:
echo file_get_contents($file);
2:
readfile($file);
3:
if (($handle = fopen($file, "rb")) !== false)
{
while (!feof($handle))
{
echo fread($handle, 4096);
}
fclose($handle);
}
Ben bir 500MB dosya ile test ederken bu yöntemlerin hepsi çok güvenilmez olduğunu buldu. Hem birinci hem ikinci tüm tarayıcılar ve rastgele yüzdeleri ile başarısız. Diğer zamanlarda onlar kadar% 80 olarak yaparken Bazen onlar zaten, bir kaç megabayt sonra başarısız. Ama sonunda onlar sadece herhangi bir hata olmadan indirmeden durdururuz.
3 yöntem en güvenilir olduğunu. Bu (yol çok yavaş da olsa; 700KB / s ile ilgili bu localhost geliyor ve readfile metodu 25MB / s çalışır when gider iken) Firefox'ta iyi indirir ve Chrome ancak Internet Explorer çoğunlukla başarısız olur. IE ilk herhangi bir "Aç / Kaydet" iletişim almadan "dosya bilgilerini alma" takılıyor. Ben bu iptal ve tekrar denediğimde bir "Aç / Kaydet" iletişim olsun.
Ben internet arama ve ben gerçekten iyi çalışıyor herhangi bir tatmin edici bir yöntem bulamıyorum. Tercihen Ben sadece her zaman sorunsuz mükemmel çalışıyor beri Apache dosyası indir işlemek istiyorum. Ama o zaman herkes bütün dosyaları indirmek olabilir beri bir kamu dizine tüm dosyaları koymak istemiyorum.
Benim seçenekleri nelerdir? Bir iyi bir yöntem var mı?