Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Gostaria de saber qual a melhor solução, visto que possuo 200.000 mil arquivos .rar com cerca de 20kb cada um disponiveis para meus clientes poderem downloads.
Como devo montar esta estrutura? Deveria criar uma tabela no banco de dados mysql e armazenar os arquivos .rar lá?
Ou qual deveria ser a melhor maneira para lidar com isso?
Qualquer luz no fim do tunel é muito apreciado, obrigado.
Existe alguma informação agregada aos arquivos? Como descrição, etc???
Se não, não faz nem sentido colocar isso em banco de dados, seria muito melhor manter isso em diretórios e utilizar as funções do PHP filesystem para manipulá-los.
>
[...]utilizar as funções do PHP filesystem para manipulá-los.
Usa...
<?php glob( '*.rar'); ?>
e era isso....
Quando você salvar em banco, por experiencia com MsSQL, os arquivos ficam maiores que o normal, e ai você terá o trabalho de recuperar a informação, e converter...
Em diretório, o arquivo continua do mesmo tamanho e não são necessárias conversões.
Ai.. Eu Estava com Esse Problema TB.. Minha Solução foi Cadastrar Num Site que oferece Hospedagem Gratuita uma Parte dos Arquivo e Cadastrar o Link para Download no Banco de Dados, Assim só os Importantes Ficaram no meu PC.. Um Exemplo é o XPG .. Entre Outros...
O sistema apenas iria fazer um select no db e retornar o arquivo .rar para o usuário poder fazer download.
Eu vejo que nao é possivel colocar 200mil arquivos em uma pasta no .ftp do site, porque isso ficará muito lento para processar.
Alguem sabe a maneira ideal que seja mais simples para fazer esse tipo de coisa?
Eu estava pensando em inserir 200mil arquivos em uma tabela dentro do banco de dados, porque acredito que abrir uma tabela é rapido, porem abrir uma pasta com 200 mil arquivos é lento.
Alguem me corrija se estou errado? E alguma solução facil para este caso?
guhFloripa Boa tarde cara ^^
Estamos falando de 2 coisas totalmente diferentes.
1º - É armazenar os arquivos em um banco de dados.
2º - É deixar os arquivos em uma pasta e usar o PHP para ler esta pasta e os dados do arquivo
3º - Eu disse que são 2 né ??
Ta, mas tem a 3º coisa tbm... rsss
Eu já realizei trabalhos com armazenamento em massa de arquivos. O ideal é você armazenar os REGISTROS deles no banco e listar normalmente para os usuários realizarem pesquisas, visualizarem a lista dos arquivos, agruparem da forma que for conveniente e etc... Nesse banco, você vai armazenar os dados que quiser do arquivo, mas o mais importante é "O nome e o Local do arquivo no DISCO".
Feito isso Guh, seu sistema vai ler uma base de dados de texto (não de arquivos) e ao selecionar qual ou quais arquivos o usuário vai realizar o download, você vai simplesmente informar o endereço completo do arquivo (endereço que veio do banco) ou seja, o PHP não precisará varrer uma pasta inteira, ler arquivo por arquivo e etc... O que iria gerar um grande desperdício de processamento e uma taxa de transação em disco grande (que em alguns servidores é cobrado o excedente).
PS: Com certeza vai ser muito mais fácil acrescentar, modificar e deletar 1 arquivo em especifico, pois dessa forma você poderia realizar uma consulta no banco (de texto) pelo nome do arquivo, ou descrição e etc...
Cara, em resumo. Utilizar o banco de dados para gerenciar os arquivos em disco com certeza vai deixar seu sistema muito mais rápido, fácil de dar manutenção e o mais importante, com escalabilidade.
Espero ter respondido suas dúvidas.
Um grande Abraço.
Obrigado pela ajuda pessoal.
Elio Bonfim Júnior, entao eu devo armazeno a url de cada arquivo.rar no banco de dados.
Tudo bem, e os arquivos vao ficar em uma pasta no ftp? certo..
Mas qual seria a maneira correta para armazenar esses arquivos em uma pasta?
Acredito que botar 200 mil arquivos .rar em uma pasta deve ser ruim para abri-la..
Qual seria a maneira correta para estruturar esse ftp?
Guh, eu já armazenei 65.000 arquivos .mp3 em uma mesma pasta e não tive problemas com lentidão. Sabe porque ??? Porque você irá abrir essa Pasta ??? FTP ??? o seu código não vai precisar ABRIR essa pasta para realizar as operações com os arquivos individuais.
O problema que você vai ter, é quando for trabalhar com um programa de FTP qualquer. Isso, porque ele tem um limite de arquivos, e muitos deles não realizam paginação desse arquivos.
Mas sabe, quando eu trabalhei com os .mp3 em uma mesma pasta, eu criei um aplicativo PHP bem simples, enviar os arquivos para um FTP (backup) e nunca tive problemas. Ou seja, se amanha ou depois você quiser agrupar esses arquivos em categorias, ou mudar eles de local, você vai fazer da mesma form.
Ler o banco de dados, filtrar e agrupar nos grupos conforme você deseja. Ai você pode realizar um Laço (while, for, etc..) e cada arquivo que você ler do banco enviar para pasta X (rename do PHP por exemplo)
Entendeu o que eu quis dizer ??? Você nunca vai precisar abrir essa pasta. E quando precisar, pode até ficar um pouco lento, mas isso vai acontecer tão pouco que você nem precisa se preocupar.
Agora... Caso você realmente esteja incomodado com o lance do armazenamento, você pode armazenar os arquivos em SubPastas. Por exemplo,
A > B > C > D > E
E isso você pode fazer depois via código conforme eu expliquei pra você. Quando eu trabalhei com os Mp3 eu fazia select no banco por Autor e agrupava as músicas, depois era só gerar um arquivo .zip ou .rar e enviar para download todas as musicas selecionadas. Ou seja... Não se preocupa com esse armazenamento agora. Foque suas atenções para a MANIPULAÇÃO deles, via código oks ???
Grande abraço amigo.
Entendi a ideia, muito obrigado amigo.
Mas entao, no seu caso voce armazenava os arquivos .mp3 separados em pastas diferentes por artistas?
Por exemplo:
musica/artista1/arquivo.mp3
musica/artista1/arquivo1.mp3
musica/artista2/arquivo2.mp3
Era assim que ficava estruturado seu FTP?
No meu caso eu precisaria criar cerca de 20 mil pastas...
Eu ouvi dizer que possui um limite maximo de arquivos por pasta é verdade?
Por exemplo, posso colocar no maximo 50 mil arquivos dentro de uma pasta. Ouvi dizer que esse limite é 32 mil, me corrija se estou errado, obrigado.
Guh, não sei em relação a limitação das pastas.
Mas seus arquivos podem ser divididos em pastas com a Ordem Alfabética pegando a primeira letra do nome. Ou por quantidade de 10 em 10 mil arquivos e etc... Exemplo.
arquivos/a/arquivo_teste.rar
arquivos/a/arquivo_teste2.rar
arquivos/a/arquivo_teste3.rar
arquivos/b/babylon.rar
arquivos/b/bababa.rar
Ou por quantidade:
arquivos/10/10.000_arquivos_aqui_dentro.rar
arquivos/20/10.000_arquivos_aqui_dentro.rar
arquivos/30/10.000_arquivos_aqui_dentro.rar
E assim vai cara... Ai pode gerenciar isso via banco.
Abração.
Tu tá encrencado, em, fi!. meu conselho é cadastrar arquivo por arquivo, junto com o url