Estoy tratando de rastrear lo que parece ser un error muy extraño. Tengo una aplicación que está estructurada aproximadamente de la siguiente manera:¿Puede finalizar el script PHP aunque se haya establecido set_time_limit (0)?
set_time_limit(0);
register_shutdown_function('logScriptCompletion');
function logScriptCompletion() {
log('script completed');
}
log('script started');
// do some calculations periodically printing out progress
El script puede tomar un tiempo para ejecutarse. El comportamiento deseado es que la secuencia de comandos continúe computando hasta el final, incluso si se pulsa el botón de detención o se interrumpe la conexión. El 99% del tiempo funciona como se esperaba.
De vez en cuando (tal vez una vez cada pocos meses/un par de miles de solicitudes) el cálculo no se ejecuta completamente, pero tanto "secuencia de comandos iniciada" como "secuencia de comandos completada" se registran y ningún otro error es fatal o no aparente (tengo el registro completo habilitado).
Tengo la sospecha de que esto puede tener algo que ver con la conexión al servidor que se descarta, pero no tengo pruebas que confirmar. Estoy ejecutando Apache 2/PHP 5.2.6 en Linux.
¿Alguien más ha visto un problema similar y puede ayudar a arrojar algo de luz sobre esto?
Interesante. No tenía este conjunto, pero el script continuaría ejecutándose después de presionar el botón de detener independientemente. Eso podría deberse a la forma en que se realiza el almacenamiento en búfer ... Gracias por la sugerencia, voy a probar esto. –