Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: 20.000 immagini

  1. #1
    Utente di HTML.it L'avatar di eraclito
    Registrato dal
    May 2002
    Messaggi
    1,273

    20.000 immagini

    ciao a tutti,

    devo realizzare un archivio forografico che contiene cira 20.000 immagini in formato jpg pesanti 5 mb l'una.

    Devo poi creare due anteprime per ogni foto, una larga 150 pixel e una larga 800.

    Mi ritrovo così con 60.000 immagini sparse per il disco.

    In un database mysql ho la scheda che descrive queste immagini, e sui campi della scheda faccio tutte le mie ricerche.

    Le immagini sono nominate $ID.jpg $ID_media.jpg e $ID_piccola.jpg per cui ottenuta una scheda vado a visualizzare le immagini in base al nome.

    Visto il numero delle immagini avrei un aumento di prestazione a dividere i file in cartelle differenti? Possono esserci dei problemi legati all'ampio numero di file?

    eraclito
    L'apprendere molte cose non insegna l'intelligenza
    Voglio avere dubbi più chiari

  2. #2
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093

    Re: 20.000 immagini

    Originariamente inviato da eraclito
    ciao a tutti,

    devo realizzare un archivio forografico che contiene cira 20.000 immagini in formato jpg pesanti 5 mb l'una.

    Devo poi creare due anteprime per ogni foto, una larga 150 pixel e una larga 800.

    Mi ritrovo così con 60.000 immagini sparse per il disco.

    In un database mysql ho la scheda che descrive queste immagini, e sui campi della scheda faccio tutte le mie ricerche.

    Le immagini sono nominate $ID.jpg $ID_media.jpg e $ID_piccola.jpg per cui ottenuta una scheda vado a visualizzare le immagini in base al nome.

    Visto il numero delle immagini avrei un aumento di prestazione a dividere i file in cartelle differenti? Possono esserci dei problemi legati all'ampio numero di file?

    eraclito
    non avresti aumenti prestazionali dividendole in cartelle ma sarebbe comunque una buona cosa secondo me.
    Per il carico beh... dipende sempre dalla quantità di accessi. Per mysql 20000 record non sono niente ma per un web server 200GB di roba sono tantini. Quindi il server dovrebbe avere molta banda a disposizione e preferibilmente degli hdd in raid.

    Un ultimo consiglio che ti do'... immagini da 5mb l'una sono molto grandi e potresti avere problemi di memoria se le ridimensioni con php. Ti consiglio quindi di ampliare il memory limit degli script

  3. #3
    le prestazioni dei sistemi unix si degradano se il numero dei files in una cartella è molto alto.


  4. #4
    io metterei tutto su db ... magari facendo una tabella per categoria in modo da evitare tabelle troppo grandi

    per quanto riguarda le prestazioni del filesystem, se si tratta di sistemi posix-like o bsd-like, dipende dal filesystem, cmq se devi avere TUTTI i file in una sola cartella ti consiglio XFS per via dell'efficentissimo sistema di caching e comunque gli hd in raid oppure metti i raptor sata da 10.000 giri al sec della western digital o della samsung (ora non ricordo)

    come ram, ovviamente, almeno un GB

    l'anteprima, farla con php è un suicidio:
    - va fatta al momento dell'upload delle immagini
    - non va fatta con le GD ... prova ad usare le imagemagick o altri tool (vedi XnView ... è un missile)


    io il memory limit lo abbasserei più che altro per verificare che i propri script rientrino nella soglia di un mb ... un mb e mezzo, massimo, in modo da evitare, per via delle troppe visite, un totale scoppio del server

  5. #5
    Utente di HTML.it L'avatar di eraclito
    Registrato dal
    May 2002
    Messaggi
    1,273
    Originariamente inviato da daniele_dll
    io metterei tutto su db ... magari facendo una tabella per categoria in modo da evitare tabelle troppo grandi

    per quanto riguarda le prestazioni del filesystem, se si tratta di sistemi posix-like o bsd-like, dipende dal filesystem, cmq se devi avere TUTTI i file in una sola cartella ti consiglio XFS per via dell'efficentissimo sistema di caching e comunque gli hd in raid oppure metti i raptor sata da 10.000 giri al sec della western digital o della samsung (ora non ricordo)

    come ram, ovviamente, almeno un GB

    l'anteprima, farla con php è un suicidio:
    - va fatta al momento dell'upload delle immagini
    - non va fatta con le GD ... prova ad usare le imagemagick o altri tool (vedi XnView ... è un missile)


    io il memory limit lo abbasserei più che altro per verificare che i propri script rientrino nella soglia di un mb ... un mb e mezzo, massimo, in modo da evitare, per via delle troppe visite, un totale scoppio del server
    gazie per i consigli,
    premetto che la macchina è linux (fedora 1) con dischi scsi in raid.
    L'anteprime le creo con le gd ma al momento dell'upload della pagina, di fatto quindi le immagini grosse non vengono quasi mai utilizzare, uno vede l'anteprima, può scaricare quella da 800 pixel e solo se paga arriva a quella da 5 mb.

    adesso cerco qualche cosa su XnView.

    le prestazioni dei sistemi unix si degradano se il numero dei files in una cartella è molto alto.
    questo mi spaventa, ma quanto alto? se dividessi le foto per tipologia e grandezza e diciamo facessi cartelle da 10.000 file è comunque troppo?


    eraclito
    L'apprendere molte cose non insegna l'intelligenza
    Voglio avere dubbi più chiari

  6. #6
    perche' non invii una email a questi e chiedi quali tecnologie hanno utilizzato oltre a php ?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    io, per il ridimensionamento, userei C# con mono

    il fatto è che devi implementare l'algorittimo di ridimensionamento ... però se hai un po di familiarità con C e matematica ... sei apposto

  8. #8
    Utente di HTML.it L'avatar di eraclito
    Registrato dal
    May 2002
    Messaggi
    1,273
    Originariamente inviato da daniele_dll
    io, per il ridimensionamento, userei C# con mono

    il fatto è che devi implementare l'algorittimo di ridimensionamento ... però se hai un po di familiarità con C e matematica ... sei apposto
    il ridimensionamento mi sembra però il minore dei miei problemi, i nuovi inserimenti non sono tanti e fatti sempre da una persona sola (per i passato sono a posto).

    La mia preoccupazione era di rendere efficiente l'accesso ai 60.000 files sparsi per il disco.

    Mi preoccupa questa cosa del calo nelle prstazioni per cartelle con tanti files.

    Ma tanti quanti? Non si riesce a quantificare? Sotto che soglia devo scendere? Perchè se 10.000 è meglio, posso farlo senza sforzo, se devo fare cartelle di 100 files ho paura che diventi un casino, e cercare fra 600 directory non crea problemi?
    L'apprendere molte cose non insegna l'intelligenza
    Voglio avere dubbi più chiari

  9. #9
    io ridimensionerei tutto in locale, usando qualche bel programma che faccia tutto batch e che usi un algoritmo decente (non quelli usati dalle GD). Perché reinventare la ruota? Poi upperei tutto, originali e anteprime. Servirà tanto spazio...


  10. #10
    non saprei valutare il calo di prestazioni dovuto ad una directori aprticolarmente affollata, ma questo succede perché molti file sistem tipo ext2 e ext3 possiedono un unico file per la descrizione del contenuto di una directory e poiché si accede a tale file per le operazioni sui files allora i tempi aumentano. tale file è semplicemente una sequenza di record quindi va letto tutto.
    Il file system ReiserFS invece utilizza un sistema di indicizzazione simile a quello usato da MySQL per le sue tabelle (B+ tree). Quindi va da Dio!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.