MANEJO DE ERRORES EN PHP

Posted: sábado, 31 de enero de 2009 by Skuarch in Etiquetas: , , ,
0

A continuacion explicare algunas de las formas que se pueden manejar los errores en PHP. En este post puedes encontrar como usar try-catch, track_errors y error_reporting.

$PHP_ERRORMSG

Para poder hacer uso de la variable $php_errormsg se tiene que tener hablitada la directiva de " track_errors=On ". si no sabes configurar el php.ini lee este articulo, por default en el php.ini esta desahabilitada. Lo que hace esto es almacenar el error en la variable antes dicha, en el ejemplo se muestra con mas claridad.

//este error se generaria, si no se tiene configurado el smtp en el php.ini
@$mails = mail('skuarch@yahoo.com.mx', 'prueba','prueba') or die ("no se fue Error
$php_errormsg");


Si no se tiene configurado un servidor de SMTP para php, la funcion mail mandara un error, este error lo podemos controlar mediante el " @ ", esto indica que se puede guardar el error en la variable $php_errormsg. En lugar de usar un " or die " podriamos haber dejado la funcion sola y mostrar el error despues.


@$mails = mail('skuarch@yahoo.com.mx', 'prueba','prueba');
echo $php_errormsg;


ERROR_REPORTING

Esta funcion lo que realiza es poder ocultar o mostrar los errores en la pagina con varios niveles, puedes hacer que se muestren unicamente los errores, o puedes hacer que se muestren los warinings, para entrar en mas detalles te muestro unos ejemplos.

error_reporting(E_ALL);

Esto muestra todos los errores en la pagina, todos los warnings y notices. Se puede manipular a conveniencia.

//no muestra ningun error
error_reporting(0)

//solo muestra los warnings
error_reporting(E_WARNING)

//esto puedes ser bueno para (variables no inicializadas, capturar equivocaciones en nombre de variables)
error_reporting( E_ERROR | E_WARNING | E_PARSE | E_NOTICE )

//sugerencias en el codigo, este es el que yo utilizo
error_reporting(E_ALL & ~E_NOTICE | E_STRICT | E_WARNING);

// Reportar todos los errores excepto E_NOTICE
// Este es el valor predeterminado en php.ini
error_reporting(E_ALL ^ E_NOTICE);

Como puedes ver se pueden hacer combinaciones para que el resultado sea mejor. Te recomiendo que esta funcion la utilizes donde haces tu conexion a la base de datos, ya que si usas indiscriminadamente esto en cada pagina, despues para modificarlo tienes que entrar en cada pagina en donde la utilizaste y modificarlo a mano.


TRY-CATCH

Estos bloques estan disponibles apartir de la version 5 de php, lo que hacen son capturas de excepciones, intentan realizar una accion, si la acccion es fallida se captura una excepcion y se continua con la ejecucion del codigo, si la excepcion es grave osea en un error fatal se para la ejecucion del codigo.

fuente: php.net

TRIGGER SENCILLO EN MYSQL

Posted: by Skuarch in Etiquetas: , , ,
0

Los trigger en mysql esta disponibles desde la version 5.0.2 y superiores, los triggers son objetos de la base de datos el cual esta ligado a una tabla y este se ejecuta cuando pasa alguna accion (INSERT,UPDATE,DELETE) en el ejemplo siguiente se muestra un ejemplo.

DELIMITER |

CREATE TRIGGER nombreTrigger BEFORE INSERT ON nombreTabla
FOR EACH ROW
BEGIN

INSERT INTO nombreTabla SET campo1 = NEW.nuevoCampo1; //tienes que tener cuidado aqui
DELETE FROM nombreTabla WHERE campo3 = NEW.campo1;
UPDATE nombreTabla SET cmpo4 = b4 + 1 WHERE campo4 = NEW.campo1;

END
|

DELIMITER ;


Lo que podemos observar de este sencillo codigo es que se necesita de un delimitador " | "
con la sentencia " CREATE TRIGGER " seguido del nombre se crea el trigger, " BEFORE o AFTER " esto se coloca cuando se quiere que se ejecute una funcion, antes o despues de alguna accion (INSERT,UPDATE,DELETE) despues se coloca " ON " y el nombre de la tabla con la que se quieres que se dispare el trigger, " FOR EACH ROW " para cada fila, despues vemos que se realizan un insert, un update y un delete, pero lo que se resalta de esto es " NEW.campo1 ", se pueden utilizar dos palabras " NEW u OLD" si el trigger esta definido para que se ejecute con BEFORE se utilizara NEW, si es AFTER se utilizara OLD, esto lo que quiere decir es que, si se usa NEW el campo todavia no se a insertado y lo contrario con OLD, dicho con otras palabras se tomaria el campo antes o despues de la accion, " DELIMITER ;" debe de llevar un espacion antes del " ; ".

Espero que te sirva, si no buscale por otro lado.

CONEXIONES EN MS-DOS O .bat

Posted: domingo, 25 de enero de 2009 by Skuarch in Etiquetas: ,
0

Con este pequeño script podemos ver que conexiones tenemos activas, las que estan cerrando, y las conexiones que se estan estableciendo.

Esto lo realizamos con un simple comando que se utiliza en windows, este es netstat, despues realiaza una busqueda y un conteo en el resultado del comando mas o menos seria asi.


REM autor skuarch
@ECHO OFF
CLS
ECHO:CONEXIONES ACTIVAS:
netstat -an |find /C "ESTABLISHED"
ECHO:CONEXIONES CERRANDOSE [close_wait]:
netstat -an |find /C "WAIT"
ECHO:CONEXIONES ESTABLECIENDOSE [syn_sent]:
netstat -an |find /C "SYN_SENT"
ECHO:
ECHO:
ECHO:PUERTOS TCP ABIERTOS:
ECHO:
netstat -an | find "LISTENING"
pause

pues lo unico que se puede resaltar de este sencillo script es como se realiza la busque de en el resultado de un comando.

netstat -an | find "LISTENING"

con esto buscamos todas las conexiones que esten en escucha.