0

ランダムなアセットを使用する PHP コードがあり、実行時にアンパックせずに tar.gz ファイルから取得したいと考えています。

それを行う方法はありますか?(もちろん、解凍できますが、なぜですか?単一の画像とbase64が必要です(さまざまな画像があります。これは単なる例です))。

4

2 に答える 2

1

そうするための賢明で効率的な方法はありません。TAR も Gzip もランダム アクセスをサポートしていないため、アーカイブ内の要素にアクセスするには、全体を解凍してスキャンする必要があります。これは非常に遅くなります。

圧縮データへのランダム アクセスが必要な場合は、ZIP などを使用します。

于 2012-07-11T18:59:42.900 に答える
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;
?>
于 2012-07-11T19:37:01.003 に答える