Foros del Web » Programando para Internet » PHP »

Errores y e interrupcion del flujo de los scripts

Estas en el tema de Errores y e interrupcion del flujo de los scripts en el foro de PHP en Foros del Web. Hola a todos! Quisiera consultar este tema para ver cómo lo resuelven. Cuando escribimos un script y manejamos los posibles errores muchas veces al detectar ...
  #1 (permalink)  
Antiguo 30/09/2007, 13:33
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 10 meses
Puntos: 2
Pregunta Errores y e interrupcion del flujo de los scripts

Hola a todos!

Quisiera consultar este tema para ver cómo lo resuelven. Cuando escribimos un script y manejamos los posibles errores muchas veces al detectar un error damos un mensaje y salimos con exit(); ó levantamos un flag ($error = 1;) y luego operamos...

El tema es que muchas veces antes de manejar los errores (o necesariamente para poder manejarlos) abro una conexion al MySQL ó instancío objetos ó armo arrays... todas acciones que uno va a querer "limpiar" al terminarse el script... pero si lo terminamos con un exit(); en cualquier lado la memoria utilizada ó las conexiones abiertas no se van a limpiar/cerrar de forma instantánea...

¿Como manejan estas situaciones ustedes?
¿Hay alguna forma de hacer alguna especie de "try() / catch()" en PHP?
¿Hay alguna función por medio de la cual pueda definir una función a ejecutarse justo cuando el script termine (sea normal o anormalmente)?


Muchas gracias! Espero este post sirva también para otros :)
  #2 (permalink)  
Antiguo 01/10/2007, 09:17
 
Fecha de Ingreso: septiembre-2007
Mensajes: 52
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Errores y e interrupcion del flujo de los scripts

Cita:
Iniciado por Computer XTress Ver Mensaje
pero si lo terminamos con un exit(); en cualquier lado la memoria utilizada ó las conexiones abiertas no se van a limpiar/cerrar de forma instantánea...
No se dónde has leído o escuchado esta afirmación, o quizás te refieres a algo que yo no interpreto bien cuando hablas de "limpiar de forma instantánea", pero la llamada a exit() no es tan "brusca" como la imaginas. En PHP, la función exit() inicia el proceso de finalización del script, que incluye limpieza de memoria, cerrar recursos/conexiones abiertas y otras tareas de esa naturaleza.

El manual de PHP menciona en varios apartes (p.ej. http://www.php.net/manual/es/language.types.resource.php) que operaciones como cerrar gestores de archivos o recursos de conexión (como p.ej. con mysql_close()) no es estrictamente necesario, ya que PHP maneja la limpieza de esos objetos automáticamente.


Cita:
Iniciado por Computer XTress Ver Mensaje
¿Hay alguna forma de hacer alguna especie de "try() / catch()" en PHP?
En PHP 5 existe soporte para excepciones con la sintaxis que mencionas: http://www.php.net/manual/es/language.exceptions.php

También puedes definir gestores personalizados para manejar errores y excepciones con set_error_handler() y set_exception_handler().


Cita:
Iniciado por Computer XTress Ver Mensaje
¿Hay alguna función por medio de la cual pueda definir una función a ejecutarse justo cuando el script termine (sea normal o anormalmente)?
register_shutdown_function().


Espero que todo este tema de liberar memoria y cerrar conexiones no te tuviera despierto de noche, y si es así quizás ahora puedas dormir un poco más tranquilo :)
  #3 (permalink)  
Antiguo 01/10/2007, 11:12
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: Errores y e interrupcion del flujo de los scripts

Dentro de POO, en vez de register_shutdown_function se pueden establecer destructores para que se ejecuten al dejar de existir el objeto. Constructores y Destructores, pero el problema que tiene es que no podés manejar el orden que se llama ni asegurar que se ejecuten al final, sino cuando se pierden todas las referencias al objeto.
  #4 (permalink)  
Antiguo 14/10/2007, 16:15
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 10 meses
Puntos: 2
Re: Errores y e interrupcion del flujo de los scripts

Gracias por las respuestas!

Lo que se me hace raro aún es el tema de las conexiones... seguro estoy mareado con el tema de los diferentes tipos de conexiones.

Con el tema de la memoria, bueno, sigo pensando en PHP como si estuviera programando en C tal vez juas


Gracias mhatter, me diste muy buena info :)

Un saludo grande.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:51.