Що може обмежувати максимальний розмір файлу для завантаження на моєму стеку Raspberry Pi LAMP?


2

Отже, у мене на сервері Raspberry Pi 3. розміщений веб-сервер LAMP. У Raspberry Pi є RAID 10, підключений до нього через апаратний RAID-контролер. Моя мета - можливість завантажувати великі файли через мою веб-сторінку за допомогою PHP через налаштування стека LAMP на Raspberry Pi.

Я можу успішно завантажити файл, розмір якого становить 0,97G, але не той, що становить 1,32G, тому щось має обмежувати розмір мого файлу для завантаження приблизно 1G - це моя здогадка.

У php.ini зараз у мене такий набір:

  • memory_limit: 1000М
  • post_max_size: 4G
  • upload_max_filesize: 4G
  • upload_tmp_dir: /mnt/raid10/Files/Temp(Це на підключеному RAID , так що це не просто дамп файлу на SD - карту , що Raspberry Pi використовує Зверніть увагу , що додавання цього. Зробило допомогу до розміру макс від перш , ніж нижче на.)

Я не можу зрозуміти, які ще налаштування мені слід спробувати коригувати, і я відкритий для будь-яких пропозицій.


Який веб-сервер ви використовуєте для розміщення сайту? Також може бути обмежено максимальний розмір файлу.
Worthwelle

У Pi3 є 1 Гб фізичної оперативної пам’яті. Я гадаю, що це обмежуючий фактор.
Давидго

Спробуйте перезапустити Apache за допомогою sudo service apache2 restart. Можливо, він ще не змінив зміни з php.ini. Це єдине посилання на конкретну конфігурацію Apache, яку я бачу, але є досить застарілою.
Worthwelle

1
Ви намагаєтеся завантажити локально, і скільки часу це займає? Ще одна можливість - ви непрацездатні протягом максимального часу виконання.
davidgo

@davidgo superuser.com/questions/1351721/… Відповідно до такої відповіді, здається, що межа пам'яті не повинна впливати на розмір завантаження, оскільки це прямий потік. Я думав те саме, саме тому і розмістив це оригінально. Дозвольте мені спробувати збільшити максимальний час виконання
Ерік Ф

Відповіді:


2

Видалення обмежень щодо розміру файлу для завантаження

Для налаштування установки LAMP (Linux, Apache, MySQL, PHP), яка дозволяє користувачеві завантажувати великі файли на свій сервер, необхідно зробити наступне:

Змініть наступні змінні в php.ini

  1. memory_limit = 1000М - встановлення ліміту пам’яті до того, що доступно в системі
  2. post_max_size= 4G - Переконайтесь, що це значення більше або дорівнює upload_max_filesizeзначенню
  3. upload_max_filesize = 4G - встановіть це так, щоб ви хотіли максимум
  4. upload_tmp_dir: /mnt/raid10/Files/Temp- За замовчуванням це вимкнено, що робить тимчасове місце розташування на тому ж диску, що і встановлена ​​ОС. У моєму випадку запускати все з Raspberry Pi, що робить його SD-карткою. Щоб було менше обмежень, я встановив це замість свого мережевого диска.

Виконавши вищезазначене, обмеженням розміру завантаження файлів є фізична пам'ять, доступна для пристрою, для чого встановлено memory_limit, та обмеження файлової системи (4 ГБ для файлової структури FAT). У випадку з моїм Raspberry Pi 3 це було 1 Гб.

Обхід ліміту пам’яті для завантаження файлу, що перевищує об’єм пам’яті

Єдиний спосіб пройти межу пам'яті - це скинути завантаження. Після ввімкнення чунчінгу під час завантаження відбувається таке:

  1. Завантаження розпочато на веб-сторінці.
  2. Дані з вихідного файлу передаються в пам'ять веб-сервера.
  3. Дані скидаються з пам'яті веб-сервера на тимчасове розташування файлів.
  4. Після того, як тимчасовий файл досягне встановленого розміру, тоді ці дані скидаються у файл остаточного місця призначення та тимчасовий файл видаляється.
  5. Повторіть крок 2, поки файл не буде завершено.

Як користуватися чунчінгом

Якщо ви використовуєте обробник завантаження, подібний до цього ( https://github.com/blueimp/jQuery-File-Upload/blob/master/server/php/UploadHandler.php ), то існує багато вбудованих варіантів.

У моєму випадку, де оголошено #fileupload, я додав рядок для maxChunkSize:

$('#fileupload').fileupload({
    maxChunkSize: 10 * 1024 * 1024, // 10 MB <-----This is the line I added
    add: function (e, data) {
       blah blah blah
    }
    });
}
});

Яке б значення тут не було, буде використаний розмір шматка. Вибраний вами розмір вимагає трохи експериментів, оскільки невеликий розмір повільно скоротить швидкість завантаження, а один занадто великий призведе до того, що користувач сайту не побачить прогрес на панелі прогресу протягом досить тривалого часу. Для мене 10MB було щасливим середовищем.

* Зауважте, що панель прогресу для завантаження переміщуватиметься лише тоді, коли починається кожен шматок, тож він стає більш спритним, ніж хороша смуга безперервного прогресу, але я з цим насправді гаразд.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.