En principio podría ser algo tipo:
Código PHP:
<?
// TU lógica para generar ese "archivo" sobre una variable.
$variable="tu contenido de tu archivo";
// cabeceras HTTP para indicar al navegador que le vas a enviar datos para que los descargue, definición del nombre del archivo que se ofrecerá para tu "guardar como ..." y otros detalles própios del protocolo HTTP
// Ojo . .no todo "cliente" se comporta igual ante estas cabeceras .. NO es problema de PHP sino de los navegadores y demás clientes que no se ponen deacuerdo cual usar y no respetan el protocoolo HTTP.
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="archivo.txt"');
// Y entregar el "archivo" (sobre una variable) generado al buffer de salida de PHP
echo $variable;
?>
llamalo por el URL sin más HTML por médio en este script ..
Un saludo,