2010-10-19 5 views
3

Рассмотрите обычную функцию загрузки изображений PHP (не используя AJAX), и возникает эта проблема с большой загрузкой изображения, иногда - менее часто на одном тестовом сервере и чаще другой тестовый сервер. Предполагая, что отладчик еще не начал отлаживать проблему, и нет проблем с разрешением файла/папки, как действовать?Лучший подход для быстрого отладки и эффективного исправления загрузки файлов с большими файлами

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

Согласно settings related to file upload, это все соответствующие/связанные настройки -
* file_uploads
* upload_max_filesize
* max_input_time
* memory_limit
* max_execution_time
* post_max_size

  1. Поиск параметров/значений для соответствующего скрипта -
    Чтобы я мог узнать, какой из них есть/сколько из них фактически нарушено моим скриптом и вызывает сбой, мне нужно сначала найти соответствующие значения для моего скрипт. Как найти следующие значения для моего сценария:

    • Всего загружено файлов размером
    • Введите время
    • Использование памяти
    • время выполнения скрипта
    • Добавлено размер данных

    Какой инструмент (ы) могут использоваться для одного и того же. Использование PHP кода, я думаю, я могу узнать несколько:

    • времени выполнения скрипта - Разницу между microtime(true) в начале и в конце сценария.
    • Общий размер загруженного файла - Foreach петля на $_FILES найти сумму ['size'] атрибута

    Как узнать остальное, как использование памяти, ввода времени и т.д.?

  2. Где/Как переопределить
    Наконец, когда я обнаружил, что нарушение установки (s), предположим, что нужно увеличить значения/переопределения для 2 установок. Где применить переопределение? Я думаю, неправильно установить memory_limit и т. Д. Для всех модулей в htaccess или в PHP-скрипте. Скорее, применение только в соответствующем модуле лучше. Я прав?

  3. Настройка для требовательных модулей Меньше
    Кроме того, для других модулей, где много ресурсов не нужны, это хорошо/мудро, чтобы переопределить настройки, чтобы уменьшить их, после тщательного изучения потребностей в ресурсах модулей? Будет ли это уменьшать ненужное потребление ресурсов? Если да, то как иметь 2 или 3 комбинации этих настроек (в зависимости от требований проекта, именования их обычного сценария, загрузка тяжелых файлов) и вызов одной функции для загрузки любой одной комбинации для каждого модуля?

  4. memory_limit меры предосторожности
    Относительно memory_limit упоминается здесь -

    Установка слишком высокого значения может быть очень опасно, потому что если несколько закачки решаются одновременно все доступные памяти будет использоваться и другие несвязанные сценарии, которые потребляют много памяти, могут влиять на весь сервер.

Какие общие меры предосторожности, чтобы принять по этому поводу?

Спасибо,
Sandeepan

ответ

1

Несколько идей для отладки:

Для ручного тестирования, я бы подготовить серию изображений с различными размерами которых чистый размер (ширина х высота) увеличивается небольшими шагами: 100 x 100, 100 x 200, 100 x 300 .... и попробуйте их. В какой-то момент они могут начать сбой, если проблема ограничена памятью. Вы можете включить только error_reporting() (возможно, используя отладочный файл cookie), чтобы вы могли видеть, что именно не удается.

Если это не вариант, я бы установил какой-то механизм для долгосрочного ведения журнала, который сохраняет размеры изображения в файл журнала или таблицу до начала изменения размера, а также содержимое массива $_FILES. В успешном завершении сценария добавьте «ОК» к этой записи. Таким образом, вы сможете узнать больше о неудачных загрузках, если они перейдут к сценарию (и не забудьте заранее из-за установки тайм-аута).

Кроме того, для других модулей, где много ресурсов не нужны, это хорошо/мудр, чтобы переопределить настройки, чтобы уменьшить их

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

Однако, если некоторые части системы (например, resizer) требуют чрезвычайно высокого предела памяти, может быть целесообразно применять только определенные настройки memory_limit, например. через a .htaccess setting.

+0

Механизм долговременной отладки отлично звучит. Но что такое «отладочный куки-файл какой-то»? Ваш ответ не охватывает все вопросы моего вопроса, но это хорошо. –

+0

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

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

  • Нет связанных вопросов^_^