Sorun indirmeden dosya

4 Cevap php

Ben bir siteden indir mp3 files zorlamak için bir senaryo yazmak. Kod çok güzel çalışıyor ancak sorun büyük dosyaları indirmek edemezler. Ben 9.21MB bir dosya ile denedim ve doğru indirilen, ama 25MB bir dosya indirmek için kod kullanmayı deneyin ne zaman, sadece bana bir bulamıyorum sunucu sayfasını verir veya web sayfası görüntülenemiyor. Yani ben şimdi o büyük dosyaları indirirken sorunları var biliyorum. Aşağıda dosya indirme yapar kod parçacığını.

header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); 			
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=\"".$dname.".mp3\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($secretfile));
$downloaded=readfile($secretfile);

Görüntülenen hata: HTTP 500 Internal Server Error

ur zaman çocuklar için u çok teşekkür ederim.

4 Cevap

Bu bellek sınırları olabilir, ancak genellikle PHP çıktı bir hata bellek sınırına ulaşıldı söyleyerek olacaktır.

Etkinse de, bütün bunlar önce çıktı sıkıştırmasını devre dışı bırakmanız gerekir:

if(ini_get('zlib.output_compression')) {
    ini_set('zlib.output_compression', 'Off');
}

Çıkış sıkıştırma etkinse bazen IE berbat edebilirsiniz.

Bellek sınırları ve zaman aşımı için PHP yapılandırma İzle

Php.ini 'de:

memory_limit = 32M
max_execution_time = 300

Eğer yürütme zamanında gerçekten yüksek gitmek isterseniz de web sunucu zaman aşımını değiştirmek gerektiğini unutmayın.

ben sadece bana bir sunucu bulamıyor sayfasını verir ya da web sayfasını görüntüleyemiyor

Bu Internet Explorer tarafından görüntülenen hata mı? Eğer herhangi bir sunucu tarafı hataları olsun musunuz? Eğer sunucu günlükleri kontrol ettin mi?

Bu deneyin:

// empty output buffer
while (ob_get_level()) {
    ob_end_clean();
}
if (ini_get('output_buffering')) {
    ini_get('output_buffering', false);
}

// function to encode quoted-string tokens
function rfc2822_quoteString($string) {
    return '"'.preg_replace('/[^\x00-\x0C\x0E-\x21\x23-\x5B\x5D-\x7F]/', '\\\$0', $string).'"';
}

// HTTP headers
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.rfc2822_quoteString($dname.'.mp3'));
header('Content-Length: '.filesize($secretfile));

// send file
readfile($secretfile);
exit;