Индикатор выполнения ZIP-архива PHP - PullRequest
0 голосов
/ 22 сентября 2011

Я гуглил по этому поводу, но не нашел никакого решения - есть ли способ создать прогесбар для добавления / извлечения файлов в / из zip-архива в PHP?Могу ли я получить какое-то сообщение о состоянии, которое я могу получить, используя запрос AJAX, и обновить индикатор выполнения?

Спасибо.

1 Ответ

1 голос
/ 13 сентября 2012

Я сейчас пытаюсь сделать то же самое;он в основном * завершен (* см. раздел «Проблемы» ниже).

Основная концепция, которую я использую, состоит в том, чтобы иметь 2 файла / процесса:

  1. Планировщик (запускает задачу и может вызываться дляполучать обновления)
  2. Задача (фактически выполняет задачу архивирования)

Планировщик будет:

  1. Создать уникальное обновлениетокен и сохранение в кэш (APC)
  2. Вызовите страницу задач с помощью асинхронного curl_multi_exec, передавая update_token
  3. Возврат токена в формате JSON ИЛИ
  4. Возврат содержимогоAPC под update_token (в моем случае это простой массив состояний) как JSON

Задача:

  1. Обновление APC со статусом, используя токен обновления
  2. Выполните реальную работу:)

На стороне клиента

Вам понадобится JavaScript для вызоваПланировщик, получите токен взамен, затем вызовите Планировщик, передав update_token, чтобы получить обновления, и затем используйте этиизмененные значения для обновления HTML.

** Потенциальные ловушки **

Сессии могут быть проблемой.Если у вас тот же сеанс, вы заметите, что ваш браузер (или это Apache?) Ждет завершения первого запроса в сеансе, прежде чем возвращать другие.Вот почему я храню в APC.

Текущие проблемы

Проблема с классом ZipArchive состоит в том, что он кажется всей рабочей работе в -> close (), в то время как метод addFile, по-видимому, занимает совсем немного времени.

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

...