Site dosya indirmenin ardından tepkisiz alır.

3 Cevap php

Ben HDD'den bir dosya indirmek için kullandığınız aşağıdaki kodu var. Ben olsun sorun ben ortada veya indirme bittikten sonra bir indirme durdurmak, site tepkisiz hale geliyor. Herhangi bir fikir neden? Çevre LAMP.

.
.
.
// get mime type
if ($dwld_allowed_ext[$fext] == '') {
    $mtype = '';
    // mime type is not set, get from server settings
    if ($file_type == null) {
    	if (function_exists('mime_content_type')) {
    		$mtype = mime_content_type($file_path);
    	}
    	else if (function_exists('finfo_file')) {
    		$finfo = finfo_open(FILEINFO_MIME); // return mime type
    		$mtype = finfo_file($finfo, $file_path);
    		finfo_close($finfo);
    	}
    }
    else {
    	$mtype = $file_type;
    }
    if ($mtype == '') {
    	$mtype = "application/force-download";
    }
}
else {
    // get mime type defined by admin
    $mtype = $dwld_allowed_ext[$fext];
}

$asfname = $fname;

// set headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: $mtype");
header("Content-Disposition: attachment; filename=\"$asfname\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $fsize);

// download
// @readfile($file_path);
$file = @fopen($file_path,"rb");
if ($file) {
    while(!feof($file)) {
    	print(fread($file, 1024*8));
    	flush();
    	if (connection_status()!=0) {
    		@fclose($file);
    		die();
    	}
    }
    @fclose($file);
}

3 Cevap

Doğru herhangi indir başlıkları göndermeden önce session_write_close() diyoruz.

Bkz this comment:

It might be worth noting that if your site uses a front controller with sessions and you send a large file to a user; you should end the session just before sending the file, otherwise the user will not be able to continue continue browsing the site while the file is downloading.

Tamamen tepkisiz hale gelir? Diğer kullanıcılara unaccessible? diğer tarayıcılar? Ben büyük bir sayfa yük durdurma uzun bir süre için Firefox askıda kalacaktır sitelerin bir çift var çünkü ben soruyorum. Diğer tarayıcılar (aynı bilgisayarda) ve diğer kullanıcılar hala sitesi cezası erişebilirsiniz. Görünüşe göre, benim durumumda, FF asılı ama site ok.

Düzenleme: kodunuzu okuduktan sonra, bu dosya kapatma komutu eof denetlerken bir süre döngü içinde olduğunu biraz balık görünüyor. http://us2.php.net/manual/en/function.readfile.php: Ne yapıyor bu bütün dosya okuma şeyi değiştirmek için readfile komutunu deneyin

Eğer (sağlanan snipped son } sonra) Dosyayı yazdırdıktan sonra exit(); eklemeyi deneyin. Bu size açıklayan sorunlar olabilir bir nedeni sizin kod kalanını ayrıştırma PHP'nin duracaktır.