Saltar al contenido

Como saber quien termino el script

Muchas veces, al trabajar en servidores que no administramos, podemos encontrarnos con que un script dejo de funcionar sin decir por que. (Ni siquiera un grito !)

Bueno diria uno… Facil de solucionar. Habilitar display_errors en el servidor. Como dice ? no se puede ? Entonces habilitemos con ini_set en nuestros scripts.

Eso nos dara la informacion que necesitamos, pero ….. Todo el mundo podra leer lo que paso (y que puede ser bastante vergonzoso). O quizas el script murio «por que si» y necesito saber de inmediato que ocurre ? (Por ej: un procesos que corre constantemente)

Hay una solucion. Desde PHP 4 en adelante se pueden registrar una funcion de «apagado». Esto es basicamente una funcion que se llama inmediatamente antes de que se termine el proceso, permitiendo entre otras cosas informar que ocurrio.

<?
$res = register_shutdown_function('shutdown');
 
function shutdown()
{
if ($error = @error_get_last())
if (isset($error['type']) &amp;&amp; ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR))
echo "Fatal Error, ending program:\n\nType    : {$error['type']}\nMessage : {$error['message']}: \nFile    : {$error['file']}:\nLine    : {$error['line']}\n");
}
?>

Eso es.

Una funcion muy sencilla que revisara el ultimo error ocurrido (que lo mas probable sea el responsable de la muerte) y si el error fue fatal, indica cual error y cual mensaje se emitio desde el script afectado.

Y si fuese necesario, podriamos guardar dicho error en una base de datos, enviarlo por correo… por sms…. o ignorarlo!

Nota : La funcion se llama luego de ya haber enviado encabezados.

Publicado enCodigoPHP
Ivn Systems/Software ©2020