Bir müşterim, web sitesini güzel bir sunucudan bir şeye taşımayı kararlaştırdı ... daha az güzel sunucu olarak adlandırın.Dosya yükleme php, bellek sınırı sorunu?
sorundur, Ayrıca daha da zor benim için, onlar fopen izin vermez hale getirmek için 32'dir ...
indirilecek 40MBs taşıyan bir dosya ve sunucuda bellek sınırı var Dosya boyutunu 20MB'ye indirirseniz, iyi çalışır.
Yani, sorum şu; bu dosyayı yapmak için dosya boyutunu küçültmenin yanı sıra ne yapabilirim?
sizeEDIT ederiz: `
$fsize = filesize($file_path);
$path_parts = pathinfo($file_path);
$ext = strtolower($path_parts["extension"]);
switch ($ext) {
case "pdf": $ctype = "application/pdf";
break;
case "exe": $ctype = "application/octet-stream";
break;
case "zip": $ctype = "application/zip";
break;
case "doc": $ctype = "application/msword";
break;
case "xls": $ctype = "application/vnd.ms-excel";
break;
case "ppt": $ctype = "application/vnd.ms-powerpoint";
break;
case "gif": $ctype = "image/gif";
break;
case "png": $ctype = "image/png";
break;
case "jpeg":
case "jpg": $ctype = "image/jpg";
break;
default: $ctype = "application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false); // required for certain browsers
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"" . basename($file_path) . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $fsize);
ob_clean();
flush();
readfile($file_path);`
i php.net
// If it's a large file, readfile might not be able to do it in one go, so:
$chunksize = 1 * (1024 * 1024); // how many bytes per chunk
if ($size > $chunksize) {
$handle = fopen($realpath, 'rb');
$buffer = '';
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo $buffer;
ob_flush();
flush();
}
fclose($handle);
} else {
readfile($realpath);
}
Phpinfo'unuzun çekirdek bölümü nasıl görünür? Yapıştırır mısın? Hızlı bir düzeltme arıyorsanız, php ayarlarınızı bir .htaccess dosyası kullanarak değiştirebilirsiniz. Onlar drupal doktorlar, ama drupal spesifik değiller. http://drupal.org/node/29268 ve http://drupal.org/node/97193 – KyleWpppd
Özellikle herhangi bir kısmı? (Burada her şeyi göndermek için biraz büyük) php.net'in yapması gereken kodun iyi olması gerektiğini söyleyen –
. Sadece ob_ dışarı çıkar .. eğer kullanılmazsa. Eğer ob ise, daha hızlı indirme için gz eklemeyi düşünün. – Teson