2010-04-22 67 views
0

這裏是我的代碼;服務器上的壓縮文件問題PHP

error_reporting(-1); 
    require("zip_min.php"); 

$f = $_SERVER['DOCUMENT_ROOT'] ."/mp3/allmp3s.zip"; 
if (!file_exists($f)) { 
$zipfile = new zipfile(); 
$folder = $_SERVER['DOCUMENT_ROOT'] ."/mp3"; 
if (is_dir($folder)) { 
if($dir = opendir ($folder)) { 
     while (false !== ($file = readdir($dir))) { 
     if($file != ".") { 
     if($file != "..") { 
      $zipfile -> addFile(file_get_contents($folder."/".$file), $file); 
      } 
      } 
     } 
     closedir($dir); 
$contents = $zipfile -> file(); 
if (file_put_contents($f, $contents)) { 

print "ok"; 

} else { 
print "error creating file"; 
} 
} 
} else { 
print "error"; 
} 
} else { 
print "file already exists"; 
} 

有10個mp3文件總大小爲100 MB,當我執行這個腳本時,我只是一個空白頁,沒有任何反應。但是30-40 mb的尺寸效果很好。

我該怎麼辦?

感謝這麼多

+0

首先嚐試'error_reporting(E_ALL);'然後你看到所有可能導致你的問題的錯誤。 – lfx 2010-04-22 14:05:33

+0

我剛剛嘗試用E_ALL現在,仍然有空白頁:( – 2010-04-22 14:08:23

+0

嘗試查看您的Web服務器錯誤日誌以及 – 2010-04-22 14:12:54

回答

2

如果您zip_min庫建立在內存中的zip,那麼這將極有可能超過腳本(ini_set('memory_limit', 0)將其刪除)的內存限制。如果你經常這樣做,可能需要查看zip庫是否可以在磁盤上建立.zip。每次在內存中存儲100MB數據在大多數服務器上都會很困難,特別是如果你爲多個用戶並行執行此操作時更是如此。

後續:

思考,即使zip_min不使用臨時文件建立ZIP,你仍然啜入內存$contents = $zipfile -> file();反正,所以你還在試圖在使用了100毫克的內存,無論如何建立拉鍊。