我正在解压缩一个 .gz 文件并将输出放入tar
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);
它工作得很好(tar 提取了几个目录和文件),直到(根据我$datapos
的)压缩文件的一半多一点,然后脚本将永远卡在这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)。