Un po di tempo fa avevo fatto una cosa del genere (utilizzando anche del codice trovato su questo forum)forzandogli il download.
Spiego meglio:
nella pagina dove ho l'elenco dei file,x ognuno di questi
creo il link che mi apre la pagina download_page.php che sarebbe quella che forza il download e gli passo valori che mi serviranno per fare la query di aggiornamento: il nome del file,il suo ID e il numero di click fatti finora.

&IDfile=<?php echo $IDfile; ?>&NumClick=<?php echo $NumClick; ?>')"> mio file


///////////////////////////////////////////////////////////

*********** download_page.php ***************
<?php

$NewNumClick = $_GET['NumClick']+1;
$sql = "UPDATE tabella SET countclick='".$NewNumClick."' WHERE IDfile='".$_GET['IDfile']."'";
mysql_query($sql);

$path_assoluto = "/tuo/path";
$dimensione = filesize($path_assoluto."/".$_GET['f']);

$filename = basename($_GET['f']);

if(ereg("MSIE ([0-9].[0-9]{1,2})", $_SERVER["HTTP_USER_AGENT"])) {
header("Content-Type: application/octetstream");
header("Content-Disposition: attachment; filename=$filename");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: public");
header("Content-Length: $dimensione");
} else {
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$filename");
header("Expires: 0");
header("Pragma: no-cache");
header("Content-Length: $dimensione");
}


$Path = $path_assoluto."/".$_GET['f'];
readfile($Path);
fclose($fp);

?>

prova cosi...
ciao