Pero que "timeout" te dá? .. que error exacto obtienes?
PHP impone tiempo de ejecución máximo a la ejecución de un script:
set_time_limit()
www.php.net/set_time_limit
También impone otras restricciones sobre el tiempo de espera para la recepción de datos (php.ini no recuerdo la directiva .. hechale un vistazo).
Pero, también un servidor HTTP (Apache? .. o el que uses) también imponen tiempo de espera máximos para entregar la página generada al cliente.
En definitiva es hacer esos ajustes en la configuración de PHP o de tu servidor HTTP, pero con el mensaje de error se verá mejor quien es el que reporta ese tiempo excedido.
Un saludo,