Dosyaları Parçalama PHP hızlı / basit yöntem, size olamaz ya, mod-xsendfile cURL gibi biraz daha profesyonel bir şey yararlanmak istemiyorsanız {[(2 )]} ya da bazı dedicated script.
$filename = $filePath.$filename;
$chunksize = 5 * (1024 * 1024); //5 MB (= 5 242 880 bytes) per one chunk of file.
if(file_exists($filename))
{
set_time_limit(300);
$size = intval(sprintf("%u", filesize($filename)));
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.$size);
header('Content-Disposition: attachment;filename="'.basename($filename).'"');
if($size > $chunksize)
{
$handle = fopen($filename, 'rb');
while (!feof($handle))
{
print(@fread($handle, $chunksize));
ob_flush();
flush();
}
fclose($handle);
}
else readfile($path);
exit;
}
else echo 'File "'.$filename.'" does not exist!';
Taşıdık richnetapps.com / NeedBee. readfile() bile 1G, bu indirilen dosya boyutu beş kat daha fazla olduğu için ayarlanmış izin verilen maksimum bellek sınırı ile, öldüğü 200 MB dosyaları üzerinde test edilmiştir.
BTW: Ben dosyaları >2GB Ayrıca bu test, ama PHP sadece 2GB dosyanın ilk yazmak başardı ve ardından bağlantıyı kırdı. Dosya ile ilgili fonksiyonlar (fopen, fread, fseek) sonuçta bir sınıra yani, INT kullanır 2GB. Yukarıda sözü edilen çözümler (örneğin, mod-xsendfile), bu durumda, tek seçenek olarak görünmektedir.
EDIT: Make yourself 100% dosya kaydedilir ki utf-8. Bunu atlarsanız, indirilen dosyalar bozuk olacaktır. Bu çözümler kullandığı print, tarayıcıya bir dosya yığın itmek, çünkü bu, bir. Em>