2012-06-13 3 views
3

Для клиента у меня есть простой скрипт, который загружает несколько файлов (изображений), изменяет их размеры, сохраняет их во временной папке, а затем переводит их в пункт назначения.PHP Остановка загрузки файлов

Изменение размера производится с использованием PHP GD, поскольку Imagick недоступен.

Эти изображения составляют около 2/4 Мб части, и клиент загружает около 30 изображений за один снимок. Я использовал атрибут multiple = "" HTML5, который работает нормально.

В тестах все работало нормально, потому что я использовал стандартные обои для Windows.

Я не могу найти источник проблемы. При загрузке более одного изображения сценарий не дает отладки, он сообщает, что он загружает второе изображение, но не изменяет его размер.

Я проверил использование памяти для изображений, которые являются aprox 105724352 байт каждый.

Мои PHP INI настройки:

max_execution_time = 300  
max_input_time = 600  
memory_limit = 200M  

Так что вы видите на втором изображении память достиг его предела, что делает мой сценарий остановки. Это верно?

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

Заранее благодарен!

EDIT:

Теперь кажется Зари Номер функции imagecreatefromjpeg наклоняю обрабатывать файлы с разрешением больше, то 3500px в ширину, мои файлы больше, то 5000px в ширину.

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

+0

Попробуйте установить 'ini_set ('memory_limit', '- 1');' для тестового примера. И скажите, если ошибка сохраняется. – sofl

+0

Кажется, что работает, все файлы обрабатываются. Благодаря! Но я думаю, что я не должен ставить файлы –

+0

Даже если вы обрабатываете только одно изображение с размером файла, например 4 МБ, вам, вероятно, понадобится более высокий memory_limit или неограниченный (-1). – sofl

ответ

3

Итак, вы видите, что на втором изображении память достигла предела, что привело к остановке скрипта . Это верно?

Проверьте свои журналы ошибок Apache в системе (** nix system) /var/log/apache2/error.log, чтобы узнать, действительно ли это проблема.

Если да, то насколько разумно обновлять лимит памяти?

Вы не должны передавать несколько операций с изображениями в одном скрипте. Делайте ajax-запросы для каждого, обрабатывайте их в отдельных экземплярах.

+0

Спасибо за ваш отзыв, проверили журнал ошибок и ошибок нет –

+0

@VincentCohen Пожалуйста, убедитесь, что вы включили отчет об ошибках, а также проверьте журнал доступа. Согласно моему опыту, он всегда должен опускать некоторые записи журнала, если есть проблема с памятью. Если вы не видите никаких записей, ваша проблема может вообще не быть проблемой памяти. – noway

+0

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

Смежные вопросы