2012-01-17 12 views
10

In PHP, sto utilizzando un file in-memory (o piuttosto in-temp) per caricare un'immagine da un URL esterno in una risorsa GD:Come eliminare un file da php: // temp wrapper

Tuttavia, a quanto ho capito, questo file rimane in memoria, anche se non lo uso per lo imagecreatefromjpeg().

C'è un modo per liberare memoria utilizzata da un file php: // temp wrapper?

O almeno si segnala che il file non è più utilizzato?

+1

Non sono sicuro che sia possibile - spero che lo sia, sembra piuttosto ridicolo se non lo è. Tuttavia, una possibile soluzione sarebbe utilizzare 'php: // maxmemory' per impostare un valore di memoria molto basso in modo che i dati vengano sempre scritti sul disco, mantenendo basso l'utilizzo della memoria. Sebbene se lo farai potresti anche usare un file temporaneo, rendendo inutile l'intera cosa 'php: // temp'. – DaveRandom

risposta

5

Quando si crea un file in php: // temp (o php: // memoria per quella materia) la risorsa dura solo la durata dello script. Se apri il file utilizzando fopen() per ottenere un handle di risorse, la durata può essere ridotta utilizzando fclose($resource_handle).

Nel tuo caso, non appena il tuo script ha finito l'esecuzione, il file non sarà più in memoria.

Nella circostanza in cui si desidera cancellare la memoria prima del completamento dello script, tutto ciò che si deve fare è fclose() il puntatore del file di risorse.

In un'altra nota, lo /img che si sta utilizzando non è valido e viene ignorato. L'unico dato aggiunto che viene riconosciuto è /maxmemory:n.