2010-01-13 12 views
8

Voglio usare la libreria GD nel mio script PHP per generare una piccola anteprima di una grande immagine casuale da un server esterno. Ogni volta che viene chiamata la pagina, la libreria GD rigenererà una miniatura e la mostrerà.La libreria GD utilizza molta memoria?

Questo rallenterà il server o consumerà una quantità insolita di memoria?

+0

Rigenerante una miniatura richiede tempo del server.L'unico modo per sapere se rende "troppo lento" o no è provarlo e vedere. Inoltre, "memoria" e "velocità" sono due concetti completamente diversi. –

risposta

1

sicuro rallenterà il server dipende anche dalla dimensione dell'immagine che si sta utilizzando. perché non salvi l'immagine dell'anteprima?

0

Se si genera una nuova miniatura per ogni caricamento della pagina, sarà necessario un tempo di elaborazione aggiuntivo. A seconda della quantità di immagini che si sta visualizzando e delle loro dimensioni originali, si può o non si può notare la lentezza. Se è comunque possibile creare la miniatura sulla prima pagina di caricamento e salvarla, e caricare la versione pre-creata per altri carichi di pagina, sarà meglio.

7

GD utilizza molta memoria. Carica completamente l'immagine nella memoria e la decomprime, quindi avrai bisogno di almeno 32 bit per pixel. Un'immagine con le dimensioni 800 x 600 do quindi utilizzare up:

800 * 600 * 32 bit = 15,4 megabit = 2 MB

Questo è solo per caricare l'immagine. Ho sentito che userà il doppio di questo se ridimensionerai, e se le tue immagini sono ancora più grandi sarà ancora più memoria.

È consigliabile prendere in considerazione la memorizzazione nella cache delle anteprime in modo che debbano essere generate una sola volta (ciò velocizzerà la pagina anche per i visitatori!).

Ho letto anche ora che stai caricando le immagini da un server esterno, nel qual caso devi REALMENTE mettere in cache l'immagine perché altrimenti i visitatori devono aspettare che tu scarichi l'intera immagine per prima. Ciò peggiora ulteriormente se il server esterno è inattivo o sovraccarico e i visitatori dovranno attendere un timeout (questo sembrerà che il servizio sia lento). Inoltre, se scarichi l'immagine ogni volta che un utente ne richiede una miniatura, perderai molta larghezza di banda.


Dal GD usa così tanto la memoria, può essere utile per generare invece le miniature utilizzando l'estensione imagick. ImageMagick ha una scala molto migliore per quanto riguarda il consumo di memoria ed è anche molto veloce (ma dovresti comunque memorizzare le immagini nella cache, per i motivi sopra indicati).

+1

+1 per * "ImageMagick ha una scala molto migliore per quanto riguarda il consumo di memoria" *, questa è l'informazione chiave che dovresti avere in grassetto! Puoi cancellare il resto. :-) – TMS

1

dipende da ciò che si sta facendo con esso, ma perché non provare per lei:

1

Qualsiasi tipo di elaborazione delle immagini è probabile che richieda un uso intensivo della memoria.

Se è possibile memorizzare in cache queste immagini in modo da non rigenerarle con ogni colpo alla pagina, sarebbe una grande mossa.

Una libreria PHP che gestisce un sacco di questa memorizzazione nella cache è phpThumb, probabilmente è l'ideale per attività come queste.

http://phpthumb.sourceforge.net/

Problemi correlati