Я хочу гарантировать, что при использовании пользовательского обработчика ошибок PHP не существует никаких условий гонки. С этой целью я хочу знать, могу ли я полагаться на error_log() или если мне нужно использовать какой-либо другой метод блокировки файлов для обеспечения правильной регистрации ошибок.
Как работает обработчик ошибок PHP по умолчанию? Безопасно ли оно от условий гонки?
Например, мне нужно заблокировать файл (который может привести к потере ошибок в этой простой версии)
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;
}
или я могу просто вызвать error_log?
error_log($message, 0);