tar
.gz ファイルを解凍し、出力を phpに入れています。私のコードは次のようになります
$tar = proc_open('tar -xvf -', array(0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'a')), &$pipes);
$datalen = filesize('archive.tar.gz');
$datapos = 0;
$data = gzopen('archive.tar.gz', 'rb');
while (!gzeof($data))
{
$step = 512;
fwrite($pipes[0], gzread($data, $step));
$datapos += $step;
}
gzclose($data);
proc_close($tar);
$datapos
それはうまく機能します(tarはいくつかのディレクトリとファイルを抽出します)(私のによると)圧縮ファイルの半分以上になるまで、スクリプトはそのfwrite($pipes...)
行で永久にスタックします(私はそれが進むのを数分待ちました)。
圧縮されたアーカイブは 8425648 バイト (8.1M) の大きさで、圧縮されていないアーカイブは 36720640 バイト (36M) の大きさです。
同様の問題を考慮したリソースが見つからないので、ここで何が間違っているのでしょうか?
2.6.32-5-amd64 Linux マシンで php5-cli バージョン 5.3.3-7+squeeze3 (Suhosin 0.9.32.1 を使用) を実行しています。