मेरा एक ग्राहक ने वेबसाइट को कुछ हद तक अच्छे सर्वर से स्थानांतरित करने का निर्णय लिया ... इसे कम अच्छा सर्वर कहने दें।PHP में फ़ाइल डाउनलोड, स्मृति सीमा समस्या?
समस्या है, वहाँ 40MBs के साथ एक फ़ाइल को डाउनलोड करने की और सर्वर पर स्मृति सीमा है है 32. यह और भी मुश्किल है मेरे लिए, वे fopen की अनुमति नहीं देते बनाने के
... इसके अलावा, अगर मैं फ़ाइल आकार को 20 एमबी तक कम करता हूं तो यह ठीक काम करता है।
तो, मेरा सवाल यह है कि, मैं क्या कर सकता हूं - फ़ाइल आकार को कम करने के अलावा - यह काम करने के लिए?
धन्यवाद
संपादित करें: `
$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);`
कोड मैं 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 का मुख्य भाग कैसा दिखता है? क्या आप इसे पेस्ट कर सकते हैं? यदि आप एक त्वरित फिक्स की तलाश में हैं, तो आप एक .htaccess फ़ाइल का उपयोग कर अपनी PHP सेटिंग्स को बदलने में सक्षम हो सकते हैं। वे ड्रोपल डॉक्स हैं, लेकिन वे ड्रूपल विशिष्ट नहीं हैं। http://drupal.org/node/29268 और http://drupal.org/node/97193 – KyleWpppd
विशेष रूप से कोई भी हिस्सा? (यहां सब कुछ पोस्ट करने के लिए यह बहुत बड़ा है) –
php.net से कोड ठीक करना चाहिए। बस ob_ बाहर पट्टी .. अगर इस्तेमाल नहीं किया जाता है। यदि ओबी, तेजी से डाउनलोड के लिए gz जोड़ने पर विचार करें। – Teson