Carregue os arquivos do cliente vsftpd ftp em / tmp e, uma vez carregados, mova-os para a pasta original

1

Estou tendo problemas com meu aplicativo. O cenário é que, há um cron do php que está sendo executado a cada 1 minuto e processa a pasta de uploads, onde os arquivos são enviados via servidor ftp (vsftpd). Se o servidor estiver fazendo upload de um arquivo de 1 GB, o php cron processará os arquivos, mesmo se não for carregado completamente. Eu não posso mudar o cron cronograma, mas eu quero saber se, se vsftpd tem alguma função, por que pode fazer o upload do arquivo em /tmp e, em seguida, passar para a pasta original uma vez que o upload estiver completo?

    
por user3355434 15.08.2014 / 11:14

1 resposta

1

Não, não tem essa função incorporada.
Existem soluções para isso.

Provavelmente, o melhor é dizer ao programa de upload para fazer o upload com um nome diferente, por exemplo, file-whatever.txt.incomplete e assim que o upload for concluído, renomeie-o como o nome normal.
A vantagem é:
A renomeação é rápida (já que o arquivo está no mesmo sistema de arquivos).
Se um upload não terminar corretamente, ele não será renomeado.
Desvantagem é claro, você precisa de mudanças tanto no processo de upload quanto no cronjob do PHP (para ignorar *.incomplete files).

A outra solução é enviá-lo para uma pasta diferente, como você sugeriu, e assisti-lo com algo como incron .
Com isso, você pode assistir a uma pasta e mover os arquivos concluídos para uma pasta diferente.
Desvantagem: se um upload falhar na metade, ele ainda será movido e possivelmente processado.

    
por 15.08.2014 / 11:42