No hace falta que generes un archivo si lo piensas entregar a descargar tan pronto se genera ..
Compón tu "archivo" a descargar tipo:
Código PHP:
<?
// etc
$listado='';
while($rows = mysql_fetch_array($result)){
$nombre = $rows["nombre"];
$email = $rows["email"];
$listado .=$nombre."|".$email."\n";
}
$filename = "log_emails.txt";
header("Pragma: no-cache");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename");
echo $listado;
?>
El tema de "comprimir" esos datos .. mm no sé si te refires a crear un archivo .zip del resultado comprimido o solo usar la compresión gZip para enviar esos datos "comprimidos" al navegador? (no sé si por ahí andará la cosa) ..
Un saludo,