O que poderia estar limitando o tamanho máximo do meu arquivo de upload na minha pilha Raspberry Pi LAMP?

2

Portanto, tenho um servidor Web LAMP hospedado em um Raspberry Pi 3. O Raspberry Pi tem um RAID 10 conectado a ele por meio de um controlador RAID de hardware. Meu objetivo é poder fazer upload de arquivos grandes através da minha página da Web usando PHP através de uma configuração de pilha LAMP no Raspberry Pi.

Eu posso enviar com êxito um arquivo de 0,97 G, mas não um que tenha o formato 1.32G, então é necessário que algo esteja limitando o tamanho do meu arquivo de upload a aproximadamente 1 GB.

No php.ini eu tenho o seguinte conjunto agora:

  • memory_limit : 1000M
  • post_max_size : 4G
  • upload_max_filesize : 4G
  • upload_tmp_dir : /mnt/raid10/Files/Temp (Isso é no RAID conectado, portanto, não é apenas despejar o arquivo no cartão SD que o Raspberry Pi usa. Observe que adicionar isso fez ajudar no tamanho máximo do antes em diante.)

Não consigo descobrir quais outras configurações devo ajustar e estou aberto a sugestões.

    
por Eric F 23.08.2018 / 22:43

1 resposta

2

Como remover as limitações de tamanho do arquivo de upload

Para configurar uma configuração LAMP (Linux, Apache, MySQL, PHP) que permite que um usuário carregue arquivos grandes em seus servidores, o seguinte deve ser feito:

Altere as seguintes variáveis em php.ini

  1. memory_limit = 1000M - Defina o limite de memória para o que está disponível no sistema
  2. post_max_size = 4G - Garanta que esse valor seja maior ou igual ao valor upload_max_filesize
  3. upload_max_filesize = 4G - Defina isto para o que você quer que o máximo seja
  4. upload_tmp_dir: /mnt/raid10/Files/Temp - Por padrão, isso é desativado, o que torna o local temporário no mesmo disco em que o sistema operacional está instalado. No meu caso de executar tudo fora de um Raspberry Pi, isso torna o cartão SD. Para ter menos restrição, defino isso para o local da unidade de rede.

Depois de fazer o acima, a limitação no tamanho do upload do arquivo é a memória física disponível para o dispositivo, o que estiver definido para memory_limit e as limitações do sistema de arquivos (4GB para uma estrutura de arquivos FAT). No caso do meu Raspberry Pi 3, isso foi 1GB.

Ignorando o limite de memória para enviar um arquivo maior do que a quantidade de memória disponível

A única maneira de ultrapassar o limite de memória é dividir o upload. Quando o chunking está ativado, o que acontece durante um upload é o seguinte:

  1. Upload iniciado na página da Web.
  2. Os dados do arquivo de origem são transmitidos para a memória do servidor da Web.
  3. Os dados são despejados da memória do servidor da Web para o local do arquivo temporário.
  4. Quando o arquivo temporário atingir o tamanho da parte que foi definido, esses dados serão despejados no arquivo de local de destino final e o arquivo temporário será excluído.
  5. Repita a etapa 2 até que o arquivo seja concluído.

Como usar o chunking

Se você estiver usando um gerenciador de downloads semelhante a este ( link ), há muitas opções incorporadas disponíveis.

No meu caso, onde o #fileupload é declarado, adicionei uma linha para maxChunkSize :

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

Qualquer valor colocado aqui será o tamanho do pedaço usado. O tamanho que você escolheu leva um pouco de experimento como um que é pequeno diminuirá bastante a velocidade de upload, e um muito grande fará com que o usuário do site não veja nenhum progresso em sua barra de progresso por algum tempo. Para mim 10MB foi um meio feliz.

* Observe que a barra de progresso para o upload será movida somente quando cada parte começar, então ela se torna mais instável do que uma boa barra de progresso contínuo, mas eu estou realmente bem com isso.

    
por 24.08.2018 / 15:45