2012-07-11 55 views
0

我有使用隨機資產的PHP代碼,我想從tar.gz文件中獲取它們,而無需在運行時將其解壓縮。運行時tar.gz瀏覽

有沒有辦法做到這一點? (當然,我可以解開它,但爲什麼?我只想單個圖像和base64它(有不同的圖像;這僅僅是例子))。

+1

你必須「解壓」它,無論是磁盤還是內存。如何在不解壓的情況下知道圖像在數據中的位置?文件有兩個擴展名的原因是因爲已經應用了兩件事。 1)焦油,和2)gzip。這些是單獨的操作,它不像整個目錄結構被索引的zip文件。 – Leigh 2012-07-11 17:40:33

+0

你爲什麼要這樣做?磁盤空間現在非常便宜。 – meagar 2012-07-11 17:41:59

+0

這是爲了快速部署我的腳本。 – djmati11 2012-07-11 19:55:15

回答

1

有沒有明智的,有效的方式來這樣做。 TAR和Gzip都不支持隨機訪問,因此您必須解壓並掃描整個內容以訪問歸檔中的任何元素。這將非常緩慢。

如果您需要隨機訪問壓縮數據,請使用類似ZIP的東西。

0

你可以使用popen調用tar在內存中提取存檔的單個文件:

例如:

z.tgz -> contains two files 1.txt and 2.txt 

那麼這可以讓你的1.txt內容到一個變量。

<?php 
    $file='z.tgz'; 
    $extract='1.txt'; 

    $fp=popen('tar Oxzf '.$file.' '.$extract,'r'); 
    if (!$fp) die('Failed to execute tar'); 
    $data=stream_get_contents($fp); 
    fclose($fp); 
    echo 'Contents of '.$extract.': '.$data; 
?>