бенчмаркинг — Zip extractTo () производительность

Я использую PHP 5.6.3.
Один из моих профессиональных проектов включает в себя функцию распаковки:

// ZIP file to extract
$my_file = "repository.zip";

$zip = new ZipArchive;
if ($zip->open($my_file) === TRUE)
{
//Unpack all files from zip
$zip->extractTo($this->target_directory);
}

$zip->close();

… который обрабатывается на большом файле ZIP (~ 300Mo).

Я сделал много тестов времени простоя и обнаружил, что функция extractTo () составляет более 90% / 95% (20 секунд) от общего времени обработки! Хуже всего то, что размер ZIP увеличится в ближайшие недели (возможно, до 500 мес).

Есть ли способ оптимизировать эту часть моего сценария?
Знаю это я должен извлечь все файлы из ZIP.

Благодарю.

-1

Решение

Есть ли способ оптимизировать эту часть моего сценария?

Нет — это одна строка кода, вызываемая один раз. Должно быть очевидно, что нет способа оптимизировать его.

Я подозреваю, что вы действительно хотите знать, можете ли вы получить файл в разархивированном виде, а это совсем другой вопрос.

функция extractTo () составляет более 90% / 95% (20 с.) от общего времени обработки

Прошедшего времени? Процессорное время? Время выполнения PHP?

Может быть возможность получить результаты быстрее, но вы не задаете правильные вопросы. Вы не получите здесь решения — у нас нет доступа к вашей системе, чтобы исправить это за вас.

Поскольку вы ничего не сказали нам об операционной системе и оборудовании, на котором она установлена, мы еще более ограничены в советах, которые можем дать. Переход к более быстрому ЦП может помочь, но, основываясь на предоставленной вами информации, мы не знаем, является ли это узким местом ЦП или В / В хранилища. То, как вы заставите всю систему работать быстрее, заполнило бы большую книгу (я знаю, я ее написал).

Выполнение извлечения вне PHP может помочь.

Использование другого алгоритма сжатия может помочь.

Создание нескольких файлов и разархивирование их параллельно, вероятно, поможет.

….но вы также ничего не сказали нам об ограничениях здесь.

1

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

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