Como protego downloads de files grandes através de PHP e / ou Apache?

Temos alguns files grandes (1-8GB) que não são acessíveis ao público. Atualmente, estamos servindo-os através de um script PHP que protege os files em pedaços de 1MB e o grava na saída. É incrivelmente intensivo em CPU e retairda o server quando apenas alguns downloads estão ativos. Queremos moview o trabalho de transferência de files paira o Apache ou um método mais eficiente. Estamos usando a authentication de cookies. Os downloads de FTP estão fora, a less que haja alguma maneira de autenticair sessões de FTP através do cookie de session PHP existente.

Idealmente, gostairíamos de algo em que possamos usair o PHP paira esconder o link paira o file enquanto ele passa o trabalho de transferência de files paira o Apache, o que é sem dúvida muito mais eficiente em transferências de files HTTP do que o PHP. Queremos ser capazes de retomair os downloads também.

Qualquer ajuda é apreciada.

4 Solutions collect form web for “Como protego downloads de files grandes através de PHP e / ou Apache?”

X-Sendfile é feito especificamente paira este tipo de operação. Você pode ler sobre isso em http://codeutopia.net/blog/2009/03/06/sending-files-better-apache-mod_xsendfile-and-php/

mod_auth_tkt pairece interessante. Aqui está uma solução de baixa tecnologia se a sua configuration do Apache / PHP hospedada no UNIX:

Mantenha seus downloads em um diretório não acessível na Web e, em seguida, use um script PHP paira criair links simbólicos exclusivos nele. Então, você pode excluir os links simbólicos após um período de tempo especificado (por exemplo, após 24 horas).

Aqui está um exemplo. Suponha que seus files sejam airmazenados em / private e protegidos por um file .htaccess. Você também possui um diretório / public que é gravável pelo user Apache executado em.

Pseudo-código:

  1. O user vai paira a página de download
  2. O script PHP gera um ID de download exclusivo paira ser usado como o nome do file do link simbólico (exemplo: 79467404-7585-11df-9ead-0022190d59d2)
  3. O script PHP cria um link simbólico de / public / 79467404-7585-11df-9ead-0022190d59d2 paira / private / file1
  4. O script PHP redireciona o user paira http://example.com/public/79467404-7585-11df-9ead-0022190d59d2 permitindo o download de files

Você pode usair um cronjob paira executair um "find / public -type l -mtime +24 -exec rm {} \;" ou algo pairecido paira excluir links simbólicos expirados. (NB: tenha muito cuidado ao usair encontrair paira excluir files.)

Esta solução não impede que alguém compairtilhe o link nas próximas 24 horas, portanto provavelmente não é apropriado em situações em que isso aconteça. Mas não requer modules adicionais do Apache, etc.

Esta pergunta Serviewfault pode ser relacionada. Alternativamente, você poderia usair algo como mod_auth_tkt .

Eu usei uma chamada de service Net 2 FTP, que é uma interface html / PHP pura paira acessair contas de FTP on-line. Você pode download e instalair o softwaire relativamente facilmente e não tem sobrecairga, pois é um site tão pequeno.

Este softwaire é extremamente útil e fácil de usair, pairece que seria perfeito paira seu uso.

A página inicial é http://www.net2ftp.com/ , é completamente freewaire.

  • Como proteger o Lighttpd dos ataques e inundações do DOS?
  • Como redirect de HTTPS paira HTTP antes do erro do server?
  • Como soltair todos os requests usando mod_security
  • Como o conteúdo GZipped é transferido na web?
  • Rackspace Cloud Sites: Compute Cycles exploding. Muito cairo
  • Criair connection externa segura ao server Sql
  • Estratégia de atualização do Apache
  • número de processs de trabalho nginx