ランダムなアセットを使用する PHP コードがあり、実行時にアンパックせずに tar.gz ファイルから取得したいと考えています。
それを行う方法はありますか?(もちろん、解凍できますが、なぜですか?単一の画像とbase64が必要です(さまざまな画像があります。これは単なる例です))。
ランダムなアセットを使用する PHP コードがあり、実行時にアンパックせずに tar.gz ファイルから取得したいと考えています。
それを行う方法はありますか?(もちろん、解凍できますが、なぜですか?単一の画像とbase64が必要です(さまざまな画像があります。これは単なる例です))。
そうするための賢明で効率的な方法はありません。TAR も Gzip もランダム アクセスをサポートしていないため、アーカイブ内の要素にアクセスするには、全体を解凍してスキャンする必要があります。これは非常に遅くなります。
圧縮データへのランダム アクセスが必要な場合は、ZIP などを使用します。
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;
?>