Carregar arquivos de 1GB usando o processamento em PHP

Eu tenho um aplicativo web que aceita uploads de arquivos de até 4 MB. O script do lado do servidor é PHP e o servidor web é NGINX. Muitos usuários solicitaram aumentar este limite drasticamente para permitir o upload de vídeo etc.

No entanto, parece não haver uma solução fácil para este problema com o PHP. Primeiro, no lado do cliente, procuro algo que me permita trocar arquivos durante a transferência. SWFUpload não parece fazer isso. Eu acho que posso transmitir uploads usando Java FX ( http://blogs.oracle.com/rakeshmenonp/entry/javafx_upload_file ), mas não consigo encontrar nenhum equivalente de request.getInputStream em PHP.

Aumentar os limites do client_post do navegador ou o upload do php.ini ou os tempos do max_execution não são realmente uma solução para arquivos realmente grandes (~ 1GB) porque talvez o navegador expire e pense em todas aquelas manchas armazenadas na memory.

Existe alguma maneira de resolver este problema usando o PHP no lado do servidor? Agradeceria as suas respostas.

plupload é uma biblioteca javascript / php, e é bastante fácil de usar e permite a fragmentação.

Ele usa HTML5.

“mas não consigo encontrar nenhum equivalente de request.getInputStream em PHP”.

fopen('php://input'); possivelmente?

Eu criei um cliente JavaFX para enviar arquivos grandes em pedaços de tamanho máximo de publicação (eu estou usando 2 MB) e um script de receptor PHP para montar os pedaços no arquivo original. Estou liberando o código sob licença do apache aqui: http://code.google.com/p/gigaupload/ Sinta-se livre para usar / modificar / distribuir.

Tente usar o script bigupload . É muito fácil de integrar e pode carregar até 2 Gb em pedaços. O tamanho do bloco é customizável.

Como sobre o uso de um applet java para upload e PHP para processamento …

Você pode encontrar um exemplo aqui para Jupload: http://sourceforge.net/apps/mediawiki/jupload/index.php?title=PHP_Example

Dê uma olhada em seu protocolo que é um protocolo baseado em HTTP para uploads de arquivos resumíveis para que você possa continuar onde você deixou de fazer o upload novamente de dados inteiros novamente em caso de qualquer interrupção. Este protocolo também foi adotado pelo vimeo de maio de 2017.

Você pode encontrar várias implementações do protocolo em diferentes idiomas aqui . No seu caso, você pode usar seu cliente javascript chamado uppy e usar a implementação do servidor golang ou php em um servidor.

Você definitivamente pode escrever um aplicativo da Web que aceitará um bloco de dados (mesmo através de um POST), em seguida, append esse bloco de dados a um arquivo. Parece-me que você precisa de algum tipo de aplicativo do lado do cliente que levará um arquivo e quebrá-lo em pedaços, em seguida, enviá-lo para o seu serviço da Web um pedaço por vez. No entanto, parece muito mais fácil criar um diretório sftp e permitir que os clientes apenas exibam arquivos usando algum aplicativo cliente pré-existente.

Eu acho que criar sockets entre servidores e clientes e enviar dados em pedaços! … a programação de baixo nível parece ser a solução … pode não ser as apostas

Intereting Posts