Php 运行时tar.gz浏览

Php 运行时tar.gz浏览,php,Php,我有使用随机资产的PHP代码,我想从tar.gz文件中获取它们,而无需在运行时解包 有什么办法吗?(当然:我可以解包,但为什么?我只需要一个图像和一个base64(有不同的图像;这只是一个示例))。没有明智、有效的方法来解包。TAR和Gzip都不支持随机访问,因此您必须对整个过程进行解压缩和扫描,才能访问存档中的任何元素。这将是非常缓慢的 如果您需要随机访问压缩数据,请使用类似ZIP的方法。您可以使用调用tar来提取内存中存档的单个文件: 例如: z.tgz -> contains two

我有使用随机资产的PHP代码,我想从tar.gz文件中获取它们,而无需在运行时解包


有什么办法吗?(当然:我可以解包,但为什么?我只需要一个图像和一个base64(有不同的图像;这只是一个示例))。

没有明智、有效的方法来解包。TAR和Gzip都不支持随机访问,因此您必须对整个过程进行解压缩和扫描,才能访问存档中的任何元素。这将是非常缓慢的

如果您需要随机访问压缩数据,请使用类似ZIP的方法。

您可以使用调用
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;
?>


您必须将其“解包”,无论是磁盘还是内存。在不首先解压缩图像的情况下,如何知道图像在数据中的位置。文件有两个扩展名的原因是应用了两个方面。1) 焦油和2)gzip。这些是独立的操作,不像zip文件那样对整个目录结构进行索引。为什么要这样做?现在磁盘空间非常便宜。这是为了快速部署我的脚本。