Сделайте PHP zipArchive медленнее - PullRequest
0 голосов
/ 02 апреля 2020

В настоящее время я использую zipArchive в простом скрипте PHP для динамической группировки файлов перед загрузкой. Мой сценарий основан на этом очень простом коде.

$zip = new zipArchive();
if ($zip->open($destinationFile, ZIPARCHIVE::CREATE) !== true)
    die('Error...');

foreach($documents as $docName => $docURI)
    $zip->addFile($docURI, $docName);

Код работает нормально. Моя проблема больше связана с использованием ресурсов, и особенно с дис c IO. Веб-сайт размещен на общих серверах, поэтому у меня очень ограниченные возможности.

Когда скрипт работает, он использует полную квоту ввода-вывода (1,5 МБ / с). В результате мой сайт работает медленно. Иногда нам требуется более 10 секунд, чтобы загрузить очень маленькую страницу ...

Я бы хотел ограничить использование скрипта диском, чтобы веб-сайт работал и был достаточно отзывчивым.

Если я ' Я могу добавить в архив множество очень маленьких файлов. Я могу просто добавить сон в l oop. Тем не менее, это не решение, когда я должен добавить файлы большего размера.

Мне не удалось найти способ заставить его работать медленнее. Я не знаю их, но потоки могут помочь мне, обрабатывая большие файлы в отдельных частях. Однако потоки доступны только для чтения в zipArchive. Потоков также было здорово уменьшить использование памяти.

Я думаю, что это не обычный запрос ...

...