D'autres ont déjà abordé les bases de sleep() et de la limite de temps d'exécution du script PHP, mais vous devez également être conscient d'un autre risque lors de l'utilisation de périodes de sommeil vraiment longues.
En général, lorsqu'un navigateur envoie une requête à un serveur et ne reçoit aucune donnée du serveur, la connexion peut expirer. Cette limite de temps dépend des configurations du navigateur, mais j'ai lu que IE7 a une valeur par défaut de seulement 30 secondes, tandis que Firefox a une valeur par défaut de 115 secondes - vous pouvez vérifier votre propre configuration dans Firefox en allant à about:config et en filtrant par network.http.keep-alive.timeout (la limite de temps est spécifiée en secondes).
Édition : J'avais inversé les unités de network.http.keep-alive.timeout et browser.urlbar.search.timeout. C'est en effet en secondes, pas en dixièmes de seconde.