Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è il modo migliore per archiviare le immagini degli utenti utilizzando PHP e MySQL?

"Migliore" dipende dal tuo obiettivo.

I due modi principali per archiviare le immagini caricate dall'utente sono inserire il contenuto binario nel database come BLOB o archiviare le immagini nell'unità da qualche parte e inserire una voce nel database che indica quale immagine appartiene a dove.

L'inserimento delle immagini nel database ha il vantaggio di non richiedere alcun tipo di autorizzazione del filesystem sul server web e rimuove qualsiasi tipo di problema di sincronizzazione se stai servendo il sito da più server web. Tuttavia, nel tempo rende il tuo database enorme e se non progetti correttamente le tue tabelle, può assolutamente uccidere le tue prestazioni e scalabilità.

La memorizzazione delle immagini come file nel file system ha l'ulteriore vantaggio di rendere il recupero estremamente rapido ed efficiente, poiché i server web sono molto bravi a servire file statici.

Modificato per aggiungere

Se decidi di archiviare il contenuto del file nel database, non inserirlo assolutamente in una tabella a cui è necessario accedere rapidamente. Se, ad esempio, hai una tabella "utenti" che viene cercata in quasi tutte le visualizzazioni di pagina, quella tabella non il posto dove mettere il contenuto del tuo file. Invece, crea una tabella "immagini" o "file" separata contenente il file e le relative meta-informazioni.

Mettere molti byte per riga in una tabella rende la tabella molto lenta con cui lavorare. Non vuoi quel genere di cose nelle tabelle che vedono un uso intenso.