Uploads do FileZilla não são atômicos

2

Eu venho usando o FileZilla há algum tempo para fazer FTP, e embora funcione quase o tempo todo, existe uma falha importante que encontrei:

Se eu fizer upload de um arquivo alterado, e um usuário do meu site fizer algo que use esse arquivo (muito mais comum com arquivos de inclusão) no momento em que estiver fazendo o upload, o usuário receberá um erro do PHP nas linhas de unexpected $end porque o arquivo está sendo lido enquanto é enviado pela metade.

Existe uma opção em algum lugar no FileZilla para bloquear um arquivo enquanto ele está sendo carregado, tornando assim o upload atômico, ou estou sem sorte e de volta à busca por um bom programa de FTP?

    
por Niet the Dark Absol 16.02.2015 / 14:27

1 resposta

5

Esse é um problema geral. O protocolo FTP não suporta nenhum mecanismo padrão de bloqueio de arquivos.

É possível solucionar isso fazendo o upload de um arquivo para um nome de arquivo temporário; e renomeá-lo para um nome final quando o upload for feito somente.

Caso o protocolo SFTP seja uma opção para você, o cliente WinSCP SFTP / FTP pode fazer isso de forma transparente para qualquer upload. Infelizmente, ele suporta isso apenas com o protocolo SFTP, não com o FTP. Veja Resumo automático / transferência para o arquivo temporário na documentação do WinSCP.

(eu sou o autor do WinSCP)

    
por 16.02.2015 / 15:17

Tags