我想使用下面的代码将大约10000个文件打包到.tar档案中。没有什么太大的——存档的大小不会超过100MB。我的问题是这需要很长时间。事实上,我现在要打包9000个文件一个小时。在shell上,这是在2分钟内完成的,它是一个运行apache2的强大的linux服务器。那么这里出了什么问题?如何提高PHP脚本的速度?
$Path = str_replace('''', '/', realpath($Path));
if (is_dir($Path) === true) {
$files = new 'RecursiveIteratorIterator(new 'RecursiveDirectoryIterator($Path), 'RecursiveIteratorIterator::SELF_FIRST);
$archive = new 'PharData('/var/www/test.tar');
foreach ($files as $file) {
$filePath = $file->getRealPath();
$archive->addFile($filePath);
}
RecursiveIteratorIterator相当慢。。。但问题是你们为什么要用它?尝试Phardata buildFromDirectory函数:
<?php
...
if (is_dir($Path) === true) {
$archive = new PharData('/var/www/test.tar');
$archive->buildFromDirectory($Path);
}
...
?>
希望有助于