1 MB Betiğinde at kesildi DAMLA İndir 1 MB daha az Dosyaları İşleri

2 Cevap php

Ben sadece son zamanlarda sordum ve damlacıklar olarak bir MySQL veritabanı içine 2 MB daha fazladır yükleme. PDF dosyaları ile ilgili bir soru çözdü. Benim php.ini dosyası ve MySQLs maksimum paket ayar bazı ayarları değiştirmek zorunda kaldı. Ancak, bu sorunu düzeltmek benim komut ile yeni bir sorun bulmak için bana yol açmıştır.

Benim BLOB veritabanına dosya yükleyebilir beri Şimdi test amaçlı dosyasını indirmek için çalıştı. . Ben aşağıdaki hata aldı PDF dosyasını açmak için gitti benim öndeydi: belge (hata 3) 'file :/ / / tmp/test-13.pdf' yüklenemedi. Araştırmamız sonucunda ben indirilen dosya öğrendim, test.pdf, sadece 1 MB, biraz az biraz fazla 2 MB veritabanında sözde boyutunun yarısından daha oldu. Bu tabii ki hata için nedenidir.

Aşağıdaki kod parçası ben veritabanından dosyaları indirmek için kullanıyorum benim senaryonun parçasıdır. Bu komut ve works Flawlessly for files that are less than 1 MB. arasında çok üstünde olduğunu

 foreach($_REQUEST as $key => $value)
 {
 if ($value == 'Open')
   {
    header();
	session_start();
	$dbh = new PDO('mysql:host='.$_SESSION['OpsDBServer'].'.ops.tns.its.psu.edu;  
           dbname='.$_SESSION['OpsDB'], $_SESSION['yoM'], $_SESSION['aMa']);
	$id = $key;
	$sqlDownload = "SELECT name, type, content, size  FROM upload WHERE 
    id='".$id."'";
	$result = $dbh->query($sqlDownload);

    $download = $result->fetchAll();
	$type = $download[0]['type'];
	$size = $download[0]['size'];
	$name = $download[0]['name'];
	$content = $download[0]['content'];

    header("Content-type: $type");
	header("Content-Disposition: inline; filename=$name");
	header("Content-length: $size");
	header("Cache-Control: maxage=1");
	header("Pragma: public");

	echo $content;

	exit;
   }
 }

Belki ben yanlış bazı başlık ifadeler olduğunu düşünüyorum? Ben ne hakkında çok karıştı. Ben php.ini ile arandı ve ben değişti gerek yok ayarları bulduk ve MySQL için benim maksimum paket ayarını öylesine 2 MB yüklemeniz gerekir 4. MB.

Herhangi bir yardım için teşekkür ederiz.

2 Cevap

Aslında sorunu sabit. Ben php.ini ve my.cnf burada önerilen ama ben de PDO için bir ayarı değiştirmek için gerekli olan tüm değerleri değişti.

I changed: PDO::MYSQL_ATTR_MAX_BUFFER_SIZE (integer) Maximum buffer size. Defaults to 1 MiB.

Bu PDO nesnesi olsa çalışmaya oluşturulduğunda ayarlanmalıdır. Tüm şimdi iyi.

Göre (http://dev.mysql.com/doc/refman/5.0/en/blob.html):

The maximum size of a BLOB or TEXT object is determined by its type, but the largest value you actually can transmit between the client and server is determined by the amount of available memory and the size of the communications buffers. You can change the message buffer size by changing the value of the max_allowed_packet variable, but you must do so for both the server and your client program.

Göre (http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html) max_allowed_packet için varsayılan değer 1048576 olduğunu.