2013-04-25 116 views
2

假設我的服務器有4GB的內存,我上傳了一個大小5GB的文件。我如何使用gridfs下載該文件。以下站點聲明:http://www.php.net/manual/en/mongogridfsfile.getbytes.php 如果您的文件比內存大於其問題,但並未告知解決方案。內存限制避免在MongoGridFSFile :: getBytes PHP

任何人都可以有任何解決方案。 我使用此演示代碼來訪問文件。

<?php 
// Connect to Mongo and set DB and Collection 
$mongo = new Mongo(); 
$db = $mongo->myfiles; 

// GridFS 
$gridFS = $db->getGridFS(); 

// Find image to stream 
$file = $gridFS->findOne("win.tar"); 

// Stream image to browser 
header("Content-Description: File Transfer"); 
header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"win.tar\""); 
echo $file->getBytes(); 
?> 

回答

3

從版本1.3.0的PHP驅動程序,您可以使用$MongoGridFSFile->getResource()作爲PHP流訪問GridFS文件。

使用該方法,您可以反覆讀取數據並將其打印出來,從而避免服務器上的內存限制。

1
  • 只是塊分割源文件並保存有關每個MongoDB中這些塊的元信息,每個塊都將在GridFS的普通文件後
  • ,你有一個元圖層與元源文件有關的源文件
  • 也你必須解決的問題從網格反向下載的文件和大塊的複合源文件
  • 這個塊的大小,你可以根據你的網絡速度和寬度限制選擇這塊s和塊中的塊是不同的