Linux — PHP: создание архива .tar очень медленно

Я хочу упаковать около 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);
}

1

Решение

RecursiveIteratorIterator довольно медленный … Но вопрос в том, зачем вы его используете? Попробуйте функцию Phardata buildFromDirectory:

<?php
...
if (is_dir($Path) === true) {
$archive = new PharData('/var/www/test.tar');
$archive->buildFromDirectory($Path);
}
...
?>

Надежда помогает

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]