I caricamenti di FileZilla non sono atomici


2

Sto usando FileZilla da un po 'di tempo per roba FTP, e mentre funziona benissimo quasi sempre, c'è un grosso difetto che ho riscontrato:

Se carico un file modificato e un utente del mio sito fa qualcosa che usa quel file (molto più comune con i file include) nel momento in cui si sta caricando, l'utente riceve un errore PHP sulla falsariga di unexpected $endperché il file è viene letto mentre è caricato a metà.

Esiste un'opzione da qualche parte in FileZilla per bloccare un file mentre viene caricato, rendendo così il caricamento atomico, o sono sfortunato e di nuovo alla ricerca di un buon programma FTP?


Perché non informare gli utenti che il sito Web è inattivo per alcuni minuti durante l'esecuzione del caricamento? Oppure potresti provare a caricare file con nomi di file diversi e rinominarli dopo il completamento del caricamento.
Vinayak,

@Vinayak Alcuni motivi, principalmente perché il ciclo di sviluppo è estremamente veloce (beh, in realtà è tutto fatto dal vivo ...) questi aggiornamenti avvengono molto spesso. Anche intraprendere una piccola azione extra comporterebbe rapidamente un sacco di lavoro extra. Inoltre, il tempo di attività è estremamente importante - ancora una volta, molti piccoli tempi di inattività si sommerebbero molto rapidamente a giorni-uomo cumulativi di tempi di inattività.
Niet the Dark Absol,

Vedo. Sfortunatamente non ho trovato nulla su Internet riguardo alle operazioni FTP atomiche. Tuttavia, sospetto che potresti sviluppare una soluzione interna personalizzata che controlla una directory per il contenuto nuovo o aggiornato e se viene rilevata una modifica, sostituisce il contenuto live con il contenuto aggiornato ogni 15 minuti attraverso un processo cron?
Vinayak,

@Vinayak A questo punto sembra la mia soluzione più praticabile, purtroppo.
Niet the Dark Absol,

Ho appena scoperto questo, ma penso che SFTP potrebbe essere comunque una soluzione migliore.
Vinayak,

Risposte:


5

Questo è un problema generale. Il protocollo FTP non supporta alcun meccanismo standard di blocco dei file.

È possibile aggirare il problema caricando un file con un nome di file temporaneo; e rinominalo con un nome definitivo solo dopo aver effettuato il caricamento.

Nel caso in cui il protocollo SFTP sia un'opzione per te, il client SFTP / FTP WinSCP può farlo in modo trasparente per qualsiasi caricamento. Sfortunatamente, lo supporta solo con il protocollo SFTP, non con FTP. Vedere Ripristino automatico / Trasferimento al nome file temporaneo nella documentazione di WinSCP.

(Sono l'autore di WinSCP)


Sto davvero usando SFTP quindi questa è sicuramente un'opzione. Anche se all'inizio ho trovato WinSCP un po 'difficile da usare, ho usato WinSCP al lavoro per un po' di tempo e ho iniziato a capire come funziona. Sicuramente mi piacciono le opzioni di sincronizzazione, poiché in questo modo non devo nemmeno andare alla finestra per confermare il caricamento, ho solo salvato e fatto. È bello sapere che hai quella cosa automatica per il nome file temporaneo, è esattamente quello che stavo cercando. Quindi darò un altro tentativo a WinSCP. Grazie! :)
Niet the Dark Absol,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.