Создать ZIP-файл в php, windows

Мне нужно создать zip-файл с помощью php. Файлы расположены в каталоге моего веб-сервера. Я должен добавить эти файлы (динамически) и сделать zip-файл.

Отлично работает в php с небольшими файлами, но когда я попытался сделать zip, используя файлы размером более 200 МБ, мне потребуется больше времени для создания zip.

Итак, есть ли способ сделать zip-файл с помощью системной команды Windows, которая может работать через PHP? Чтобы мы могли легко и быстро создавать zip-файлы без потери памяти.

Пожалуйста помоги


person ramesh    schedule 18.04.2012    source источник
comment
А что будет, если нужно добавить 20 файлов по 2 ГБ каждый? Просто потому, что вы измените метод создания zip-файла, он не будет создан быстрее (или, по крайней мере, значительно быстрее). Если вам нужно заархивировать большие файлы, вам просто придется принять удар по производительности — двух способов не существует.   -  person Aleks G    schedule 18.04.2012


Ответы (1)


Вы можете попытаться реализовать какую-то очередь, возможно, в своей базе данных. Вы ставите в очередь операции zip, в то время как в фоновом режиме какое-то задание cron выполняет zip-архивирование и уведомляет вашу очередь, когда оно завершено.

Это не уменьшит время обработки, но, поскольку сжатие — это операция с высокой нагрузкой на ЦП и ввод-вывод, ее, вероятно, нельзя сильно ускорить. Используя этот метод, вам не нужно позволять пользователю ждать, пока архивирование не будет выполнено, вы можете, например, просто отправить электронное письмо (со ссылкой на созданный zip-файл), когда это будет сделано.

person CodeCaster    schedule 18.04.2012
comment
спасибо за ваш ответ, и не могли бы вы мне немного помочь, как сделать zip, используя динамические файлы из php? - person ramesh; 18.04.2012
comment
@ramesh нет такого понятия, как «динамические файлы», поэтому я не знаю, что вы имеете в виду. С помощью ZipArchive вы можете добавлять файлы с диска, а данные из памяти в зип-архив. - person CodeCaster; 18.04.2012
comment
окей .. это то, что я имел в виду на самом деле. .. Но как создать zip из такой операции, как задание cron? Я имею в виду работать в фоновом режиме? - person ramesh; 18.04.2012
comment
@ramesh вы можете запустить скрипт PHP из задания cron, поэтому используйте ZipArchive вы можете делать все, что вам нравится. - person CodeCaster; 18.04.2012