Salut,
Si tu veux lancer ton téléchargement en background il faut que tu utilises un pipe. Si je ne me trompe ce serait un truc du genre '> /dev/null' :
<?php shell_exec('wget big_fichier.tar.gz > /dev/null'); ?>
Il n'y a aucun problème à utiliser shell_exec, je ne vois pas en quoi il n'est pas sécurisé!
Sinon pour le dernier point, utilise just autre chose que shell_exec, par exemple scandir ou un truc du genre.
Bonne chance,
Lea