Я работаю над приложением, которое позволяет загружать и хранить большие файлы на веб-сервере. В настоящее время я использую PHP для обработки POST-файлов через http. У меня есть php.ini с:
upload_max_filesize = 100M
post_max_size = 100M
memory_limit = 128M
max_input_time = 6000
max_execution_time = 6000
Кажется, что для LimitRequestBody не установлено никаких директив apache. Я использую APC для отслеживания прогресса загрузки файла. По какой-то причине загрузка файла всегда останавливается точно на 50M.
Я знаю, что http - не самое эффективное решение для загрузки файлов, но это приложение должно быть удобным для пользователя, и я понимаю, что с ftp возникают проблемы с брандмауэром.
Мне интересно, кто-нибудь может дать мне несколько советов о том, что останавливает мою загрузку ровно на 50M? Это должна быть какая-то настройка конфигурации.
Кроме того, есть ли какой-то другой способ, который я должен рассмотреть, используя javascript / PHP и http для загрузки файлов. Я посмотрел в Java-апплеты и с помощью Flash. Возможно, я собираюсь использовать swfuploader, но если это конфигурация сервера, которая приводит к сбою загрузки через http, я не вижу, как обойти это будет апплет Java или флэш-загрузчик.
Я должен отметить, что я надеюсь найти решение, которое позволит мне загружать очень большие файлы размером до 1 ГБ в какой-то момент.
Я использую очень упрощенный PHP для получения файла
$uploaddir = '/'.$_POST['upload_directory'].'/';
$uploadfile = $uploaddir . basename($_FILES['file']['name']);
if (is_uploaded_file($_FILES['file']['tmp_name'])) {
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { some success code; }
Очевидно, что в этом есть что-то большее, но это суть того, как я справляюсь с загрузкой.