Situazione:

Diciamo che il mio hosting ha un "Memory Limit = 128M"
Io ho bisogno di fornire all'utente un file in output "dinamico", dopodichè CANCELLARE il file TEMPORANEO.

Allora, prima possibilità:
Utilizzo "readfile()" in questo modo:


Codice PHP:
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=" $file_name);
header("Content-Length: " filesize($file));
readfile($file);
@
unlink($file); 
La qual cosa "funziona", NON dà problema di "Memory Limit", MA:
se l'utente ANNULLA il "download", la funzione @unlink($file) NON viene eseguita!

Quindi, ho pensato di leggere il file in una "stringa" $data, ELIMINARE il file e spedire la stringa $data al posto del file.. in questo modo:


Codice PHP:
$data file_get_contents($file);
@
unlink($file);

header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=" $file_name);
header("Content-Length: " strlen($data));

echo 
$data

Anche questa funziona, MA .. con file "grandi", ottengo l'errore "Allowed Memory size .. Exhausted" !!!
L' errore si verifica quando STAMPO la stringa, non quando la riempio con i dati del file.
Ho provato a "splittare" la stringa $data e spedirla un po' alla volta.. ma non cambia nulla!

Odiooooo!