Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21
  1. #11
    Originariamente inviato da 99caos
    Be, molto dipende dal filesystem, ma di certo meno file ci sono meglio è. Dati non ne ho.
    Poi dipende anche da cosa intendi per casini: cali di performance sono gia un buon motivo per diminuire il numero di file in una cartella.
    Se poi per casini intendi crash di sistema o perdita di dati, be, questo non te lo so proprio dire.
    Perfetto, è già abbastanza per cambiare il metodo che uso attualmente.
    Trovo "suggestiva" anche la questione cartelle che hai sollevato; con che criterio divido i file?
    Ieri pensavo ad uno scenario in cui ho un milione di utenti i quali possiedono tre file a testa, quindi tre milioni di file in totale. Una cifra simile è sicuramente dannosa per una sola cartella.
    Se creassi un milione di cartelle, una per ogni utente, contenenti tre file ciascuna sarebbe valido? In un'altra ottica: avere molte cartelle è dannoso quanto avere molti file?

  2. #12
    Potresti creare una struttura simile:

    a/achille/nomefile
    b/beppe/nomefile

    oppure per una suddivisione maggiore

    ac/achille/nomefile
    an/andrea/nomefile
    Arjuna

    finding solutions

  3. #13
    Originariamente inviato da 99caos
    Per quanto riguarda l'avere i file in ordine immagina di scaricare dal sito diverse foto che abbiano il nome dell'hash, quando le vai a rivedere esse non avranno l'ordine preimpostato sul server ma quello alfabetico del file system. Da un punto di vista del solo sito l'hash è indubbiamente potente ma se le foto appunto verranno anche scaricate il discorso cambia.

    per me gia è poco piacevole avere un file del tipo 35455498186519651.jpg
    come ho gia detto preferirei qualcosa tipo nomedominio.it-999999.jpg
    io ho detto di usare l'hash (senza estensione) per tenerlo sul disco non per usare questo nome al momento del download

    per il download, dato che dovrai gestirlo tramite php, butti fuori gli header che gli diano il nome che vuoi che può anche essere nomedominio.it-progressivoimmagine.jpg ... nessuno lo vieta

    Certo, riconosco di essere un pò fuori luogo con questo tipo di richiesta ma almeno non fare l'hash?
    Perchè l'hash è così importante? Non basta il solo microtime?
    creeresti un sistema ove è estremamente facile sapere il nome delle immagini caricate ... basta provare incrementando i valori

    con l'hash, invece, la possibilità di trovare un hash valido è abbastanza surreale se pur possibile ma le probabilità sono davvero bassissime

    Non comprendo ancora perchè due sotto cartelle e con quale criterio si dovrebbero generare cartelle e sotto cartelle.

    Posso immaginare uno scenario:

    /immagini/nomeutente/data_acquisizione/nomedominio.tld-yyyy-99999.jpg

    100.000 foto in un anno sono una bella cifra, certo che se devi fare una community da 100.000 utenti allora il discorso cambia.
    non serve fare tutto questo casino :lol:

    ricordati che tu le devi SOLO archiviare sul disco non devi leggere le informazioni da li per gestirle ... le informazioni per gestire le immagini le devi prendere dal database di conseguenza tutta quella trafila non serve a nulla

    nota: ricordati che se è un progetto che vuoi far crescere ti conviene badare a questi dettagli che, per adesso, è facile risolvere ma che più in là ti creerebberò problemi

    immagina in hosting ... appena gli pianti il server ti fanno volare fuori in direttissima

    Be, molto dipende dal filesystem, ma di certo meno file ci sono meglio è. Dati non ne ho.
    Poi dipende anche da cosa intendi per casini: cali di performance sono gia un buon motivo per diminuire il numero di file in una cartella.
    Se poi per casini intendi crash di sistema o perdita di dati, be, questo non te lo so proprio dire.
    crash, no, è difficile ... quantità eccessive di file uccidono la macchina perché il sistema non può mantenere l'indice di centinaia di migliaia di file in cache e quindi è costretto a continue letture dal disco

    Originariamente inviato da Tobler
    Perfetto, è già abbastanza per cambiare il metodo che uso attualmente.
    Trovo "suggestiva" anche la questione cartelle che hai sollevato; con che criterio divido i file?
    Ieri pensavo ad uno scenario in cui ho un milione di utenti i quali possiedono tre file a testa, quindi tre milioni di file in totale. Una cifra simile è sicuramente dannosa per una sola cartella.
    Se creassi un milione di cartelle, una per ogni utente, contenenti tre file ciascuna sarebbe valido? In un'altra ottica: avere molte cartelle è dannoso quanto avere molti file?
    se tu creassi un milione di cartelle avresti lo stesso problema

    infatti si usa un criterio abbastanza semplice che generi cartelle e sotto cartelle ... ad esempio SQUID (un ottimo esempio per l'argomento) essendo un proxy http e https che supporta la cache ha la necessità di salvare sul disco tutta la roba che scarica.
    Lui utilizza un banale sistema ... ovvero assegna a ogni cartella una lettera e, se le cartelle sono maggiori di un tot ... ne assegna due ... poi tre ... e cosi via

    anche lui utilizza un sistema di cartelle e sotto cartelle proprio per questo motivo

    tu ci navighi per un anno e ti troverai un pozzo immane di file
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #14
    Originariamente inviato da daniele_dll
    creeresti un sistema ove è estremamente facile sapere il nome delle immagini caricate ... basta provare incrementando i valori
    ok, questo è molto convincente, ora ho capito!

    Tnks

    Visto che siamo in tema ne approfitto per fare un'altra domanda.

    Mi chiedevo che sistema usare per evitare di mostrare a chi non voglio dei file.

    Per renderli visibili ad un browser questi devono trovarsi in una cartella pubblica ma in questo modo sono visibili anche all'esterno.

    Ho pensato allora a varie soluzioni:

    1) .htaccess facendo in modo che i file presenti nella cartella da salvaguardare rimandino ad un file php che effettua i controlli ACL

    2) lasciando i file su una cartella non pubblica del server e richiedendoli tramite php

    3) memorizzando i file su un database

    La memorizzazione su database porta ad un carico eccessivo del server database
    Per le altre due soluzioni mi chiedo quanto queste pesino in termini di performance ed in particolare in riferimento alla cache del browser client.
    Arjuna

    finding solutions

  5. #15
    Originariamente inviato da 99caos
    ok, questo è molto convincente, ora ho capito!

    Tnks

    Visto che siamo in tema ne approfitto per fare un'altra domanda.

    Mi chiedevo che sistema usare per evitare di mostrare a chi non voglio dei file.

    Per renderli visibili ad un browser questi devono trovarsi in una cartella pubblica ma in questo modo sono visibili anche all'esterno.

    Ho pensato allora a varie soluzioni:

    1) .htaccess facendo in modo che i file presenti nella cartella da salvaguardare rimandino ad un file php che effettua i controlli ACL

    2) lasciando i file su una cartella non pubblica del server e richiedendoli tramite php

    3) memorizzando i file su un database

    La memorizzazione su database porta ad un carico eccessivo del server database
    Per le altre due soluzioni mi chiedo quanto queste pesino in termini di performance ed in particolare in riferimento alla cache del browser client.
    molto semplicemente neghi l'accesso alla cartella tramite htaccess (cerca su google) e poi usi uno script php che faccia da tramite

    nel caso ti serva il resume dei file è fondamentale implementare il supporto per i range ed il contenuto parziale
    http://benramsey.com/archives/206-pa...ange-requests/
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  6. #16
    Quindi la prima, il link che mi hai postato non è raggiungibile
    Arjuna

    finding solutions

  7. #17
    Originariamente inviato da 99caos
    Quindi la prima, il link che mi hai postato non è raggiungibile
    beh, in realtà ... prima seconda e terza

    La prima e la seconda perché sono praticamente la stessa cosa, infatti la cartella non pubblica la imposti tramite htaccess o permessi. La terza perché anche se non memorizzi i file sul database memorizzi TUTTE le informazioni riguardanti essi (tipo del file, mime type da inviare al browser, dimensione in byte, larghezza, altezza, profondità colore, informazioni EXIF e cosi via)
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  8. #18
    La differenza che ponevo tra la prima e la seconda è visibile nel modo in cui si richiede l'immagine

    per la prima l'immagine la chiedevo così:

    /path/immagini/nomefile.jpg

    apache poi si occupa di consegnare ad un file php il percorso dell'immagine effettuando i check.

    per la seconda l'immagine la chiedo così:

    immagini.php?id=123456

    oppure, nel caso di mod_rewrite

    immagini/123456

    Per quanto riguarda il memorizzare i dati nel database avrei un'altra domanda.

    Attualmente presa un'immagine, ne memorizzo solo il nome, l'estensione e la cartella, in quanto della stessa immagine ne creo diverse thumb per le diverse visualizzazioni in modo da ricostruire poi il percorso in funzione delle esigenze di visualizzazione creando il path in questo modo

    $pathImmagini.$nomeCartella.$nomeFile.$suffisso.$e stensione

    le dimensioni le prelevo di volta in volta con imagesize().

    Altrimenti dovrei memorizzare anche le dimensioni delle relative thumbs nel database...

    cosa è più economico secondo te?
    Arjuna

    finding solutions

  9. #19
    Originariamente inviato da 99caos
    La differenza che ponevo tra la prima e la seconda è visibile nel modo in cui si richiede l'immagine

    per la prima l'immagine la chiedevo così:

    /path/immagini/nomefile.jpg

    apache poi si occupa di consegnare ad un file php il percorso dell'immagine effettuando i check.

    per la seconda l'immagine la chiedo così:

    immagini.php?id=123456

    oppure, nel caso di mod_rewrite

    immagini/123456
    è uguale perché nel primo caso, comunque, usi il rewrite per passare il nome del file a php (o per lo meno io fare cosi se si deve mantenere quella struttura) ...

    /path/immagini/nomefile.jpg

    o

    /path/immagini/123456.jpg

    è uguale per il semplice motivo che se nel DB salvi il nome originale del file non ti costa nulla restituire quello negli headers

    Per quanto riguarda il memorizzare i dati nel database avrei un'altra domanda.

    Attualmente presa un'immagine, ne memorizzo solo il nome, l'estensione e la cartella, in quanto della stessa immagine ne creo diverse thumb per le diverse visualizzazioni in modo da ricostruire poi il percorso in funzione delle esigenze di visualizzazione creando il path in questo modo

    $pathImmagini.$nomeCartella.$nomeFile.$suffisso.$e stensione

    le dimensioni le prelevo di volta in volta con imagesize().

    Altrimenti dovrei memorizzare anche le dimensioni delle relative thumbs nel database...

    cosa è più economico secondo te?
    beh, secondo me quanta più roba metti nel db meglio è perché eviti stress inutile al server

    è vero che la lettura delle dimensioni non è cosi pesante però comunque richiede una serie di operazioni compreso l'accesso al disco mentre mysql, grazie anche alla cache attiva quasi sempre sui normali hosting, riesce a farti risparmiare parecchio nelle operazioni

    io dentro il db, oltre all'estensione, metterei anche il mime type da restituire con il content type in questo modo, una volta acquisita l'immagine, il codice di visualizzazione è il più semplice in assoluto ed hai il totale controllo sull'immagine qualunque cosa voglia tu fare

    per quanto riguarda le thumbs, in realtà, non è necessario tenere le dimensioni nel database perché saranno sempre uguali sia di larghezza sia di altezza e all'interno verrà ridimensionata e centrata l'immagine utilizzando il lato più largo e riempendo di colore (o usando la trasparenza) le parti vuote (una specie di padding dell'immagine in pratica)
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  10. #20
    Originariamente inviato da daniele_dll
    per quanto riguarda le thumbs, in realtà, non è necessario tenere le dimensioni nel database perché saranno sempre uguali sia di larghezza sia di altezza e all'interno verrà ridimensionata e centrata l'immagine utilizzando il lato più largo e riempendo di colore (o usando la trasparenza) le parti vuote (una specie di padding dell'immagine in pratica)
    Non è così nel mio caso.

    Le immagini vengono ridimensionate secondo valori massimi di width e height ma non fissi e il filling lo faccio tramite css in quanto mi serve poter utilizzare le miniature nella loro dimensione corretta.

    Di conseguenza le dimensioni delle thumb non sono standard.

    Resta da strutturare una tabella atta a contenere anche queste informazioni.
    Arjuna

    finding solutions

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.