PHP set_time_limit sin efecto

Tengo un script lento muy doloroso que obtiene muchos datos de MySQL y crea un gran informe que sirve al usuario al final como aplicación / descarga forzada.

Para resumir, en el servidor de producción termina después de unos 30 segundos (bastante consistentemente) y escupiendo un archivo vacío en su lugar. En el servidor de desarrollo funciona bien, pero tarda mucho más tiempo en ejecutarse, unos 90 segundos. Para estar ‘a salvo’, configuré mi archivo php.ini en max_execution_time = 2000 y también set_time_limit(4000) al comienzo de mi script (los números superan el tiempo de finalización esperado, pero solo para estar seguro;)).

¿Qué podría estar causando que mi servidor web ignore los límites de tiempo que establecí y me detuve después de solo 30 segundos?

Editar: una cosa que sé con certeza es que se necesita una porción de MySQL del código de 8-9 segundos para completarse, y pasa con éxito ese punto cada vez.

Tal vez el PHP safe_mode.

Intenta hacer un

 die(ini_get('max_execution_time')) 

para leer el valor después de haber llamado al set_time_limit(0); para ver si realmente se sobrescribe.

Si se sobreescribe a 0 y tu script aún muere, la causa podría ser otro en tu código