Я хочу упаковать около 10.000 файлов в архив .tar, используя приведенный ниже код. Ничего слишком большого, размер архива не будет превышать нескольких сотен мегабайт. Моя проблема в том, что это занимает много времени. На самом деле я упаковываю 9000 файлов в течение часа. В оболочке это делается в течение 2 минут, это мощный Linux-сервер, работающий на Apache2. Так что здесь не так? Как я могу увеличить скорость скрипта 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);
}
...
?>
Надежда помогает
Других решений пока нет …