Как я могу избежать OutOfMemoryErrors при использовании палаты общин FileUpload DiskFileItem для загрузки больших файлов?

Это - мое взятие на нем. Я сказал бы, что поблочное тестирование является практикой записи тестов программного обеспечения, чтобы проверить, что Ваше реальное программное обеспечение делает то, к чему это предназначено. Это запустилось с jUnit в мире Java и стало лучшей практикой в PHP также с SimpleTest и phpUnit. Это - базовая практика Экстремального программирования и помогает Вам быть уверенными, что Ваше программное обеспечение все еще работает, как предназначено после редактирования. Если у Вас есть достаточное тестовое покрытие, можно сделать основной рефакторинг, устранение ошибки или добавить опции быстро с намного меньшим количеством страха перед представлением других проблем.

является самым эффективным, когда все модульные тесты могут быть выполнены автоматически.

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

платформа запустит все тесты против Вашего кода и затем сообщит успешность или неуспешность каждого теста. phpUnit выполняется из командной строки Linux по умолчанию, хотя существуют интерфейсы HTTP, доступные для него. SimpleTest веб-по своей природе и намного легче встать и выполнение, IMO. В сочетании с xDebug phpUnit может дать Вам автоматизированную статистику для покрытия кода, которое некоторые люди находят очень полезными.

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

Это - хорошая практика для хранения модульных тестов в том же репозитории как приложение.

5
задан skaffman 18 May 2012 в 15:47
поделиться

1 ответ

При загрузке файлов, особенно больших, вы должны обрабатывать эти файлы как потоки, которые вы пересылаете в буфер в памяти среднего размера и копируете прямо в выходной файл. Неправильный способ сделать это - вдохнуть все это в память перед записью.

В документе по commons-upload чуть ниже середины упоминается, как «Обработать загрузку файла». Если вы не забудете копировать из входящего потока в выходной поток частями разумного размера (скажем, 1 МБ), у вас не должно возникнуть проблем.

10
ответ дан 13 December 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: