运行时tar.gz浏览

时间:2012-07-11 17:32:25

标签: php

我有使用随机资源的PHP代码,我希望从tar.gz文件中获取它们,而无需在运行时解压缩。

有什么办法吗? (当然:我可以打开它,但为什么?我只想要单个图像和base64它(有不同的图像;这只是示例))。

2 个答案:

答案 0 :(得分:1)

没有合理有效的方法。 TAR和Gzip都不支持随机访问,因此您必须解压缩并扫描整个内容才能访问归档中的任何元素。这将非常缓慢。

如果您需要随机访问压缩数据,请使用ZIP之类的内容。

答案 1 :(得分: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;
?>