magomac Inviato 25 Febbraio 2012 Segnala Condividi Inviato 25 Febbraio 2012 Ciao a tutti! Ho bisogno di realizzare (php) un form che permetta all'utente di uploddare un immagine. Questa poi deve essere automaticamente ridimensionata e ritagliata per creare DUE versioni a dimensioni diverse (circa 600x400 la prima e 200 x 200 la seconda). Mischiando le mie conoscenze con qualche script trovato in giro sarei riuscito a fare quello che mi serve... ma.... finchè carico immagini di piccole dimensione nessun problema. Se carico una foto vera e propria (2/3 MB) il file si carica, la prima versione piccola viene generata ma la seconda no. Analizzando i log ho capito che lo script si blocca perchè viene superata la memoria disponibile massima di 32 MB. A parte che non riesco ad immaginare come faccia a raggiungere 32MB con una foto da 2MB... C'è un modo per far si che la memoria venga "svuotata" tra un passaggio e l'altro (tanto alla fine di ogni passaggio il file viene salvato in un'apposita cartella sul server)? Grazie! Link al commento Condividi su altri siti Altre opzioni di condivisione...
pix Inviato 26 Febbraio 2012 Segnala Condividi Inviato 26 Febbraio 2012 fai stampare a video, nei vari punti chiave dello script, la quantità di memoria allocata dallo script stesso. usa la funzione memory_get_usage() che restituisce il valore in bytes. per "svuotare la memoria" ci sono diversi modi, più o meno efficienti, che dipendono anche dalla versione di PHP che stai usando (nelle più recenti c'è il garbage collector che funziona piuttosto bene....ma in quelle precedenti la cosa è un po' diversa). il metodo più semplice è usare "unset" per le variabili quando non servono più....ma con gli oggetti non sempre libera tutta la memoria allocata. un altro modo è far eseguire il lavoro ad un altro processo che non sia figlio dello script....la cosa è un po' complicata, prima proverei ad ottimizzare il codice. c'è da dire che comunque 32MB sono abbastanza pochi. ultimamente i server hanno come limite 64MB (i più scarsi) e quelli professionali anche 128 o 256. se vuoi più aiuto, devi postare del codice. An a tuesday keeps the doctor away. proud member of < noi finti professionisti > club - tessera 044 Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.