Quiero asegurarme de que no haya condiciones de carrera introducidas al usar a custom PHP error handler. Para ese fin, quiero saber si puedo confiar en error_log() o si necesito utilizar algún otro método de bloqueo de archivos para asegurar que los errores se registran correctamente.¿Es segura la función PHP error_log()?
¿Cómo funciona el controlador predeterminado de errores de PHP? ¿Está a salvo de las condiciones de carrera?
Por ejemplo, tengo que bloquear el archivo (que podría ocasionar errores que se pierde en esta versión simple)
function log_error($message)
{
if(! $fp = @fopen('/path/to/error.log', 'a'))
{
return FALSE;
}
flock($fp, LOCK_EX);
fwrite($fp, $message);
flock($fp, LOCK_UN);
fclose($fp);
return TRUE;
}
o puedo llamar error_log?
error_log($message, 0);
error_log ($ mensaje, 0) utilizará la directiva http://php.net/error-log, por lo que debe configurarla correctamente. Si usa syslog allí, entonces debería estar bien: http://stackoverflow.com/questions/1163194/syslog-r-for-linux, pero debe verificar la versión de syslog en nuestro sistema (seguro en la mayoría de los sistemas). – XzKto