Блокировка файла лога на момент записи/чтения PHP
В PHP я полный ноль, помогите пожалуйста, дописать в код блокировку файла лога на момент записи/чтения? Ну чтобы и раз блокировка была а то я вроде как написал, точнее добавил в конец кода FILE_APPEND | LOCK_EX); он заблокировал и не открывает не идет запись. Вообщем кто знает посмотрите пожалуйста. Вот сам код :
<?php
$file="user3"; //куда пишем логи
$col_zap=4999; //строк в файле не более
function getRealIpAddr() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) // Определяем IP
{ $ip=$_SERVER['HTTP_CLIENT_IP']; }
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) // Если IP идёт через прокси
{ $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; }
else { $ip=$_SERVER['REMOTE_ADDR']; }
return $ip;
}
if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexBot')) {$bot='YandexBot';}
elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'Googlebot')) {$bot='Googlebot';}
else { $bot=$_SERVER['HTTP_USER_AGENT']; }
$ip = getRealIpAddr();
$date = date("H:i:s d.m.Y"); //дата события
$home = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; //какая страница сайта
$lines = file($file);
while(count($lines) > $col_zap) array_shift($lines);
$lines[] = $date."|".$bot."|".$ip."|".$home."|\r\n";
file_put_contents($file, $lines);
?>
Есть код в котором это присутствует, но я не могу понять как это перенести, вроде так понимаю а перенести не могу. Какие то строчки да умудряюсь внести а какие то не могу понять.
Код в котором присутствует блокировка и наоборот:
<?php
$fh=fopen("file.txt", "a+"); //открываем для чтения/записи
flock($fh, LOCK_EX); //блокируем файл
fseek($fh, 0); //ставим указатель на начало файла
while (!feof($fh)) $line. = fread($fh,2048); //считываем из файла
//здесь производим обработку считанных данных
ftruncate($fh, 0); //очищаем файл
fwrite($fh, $Res_$line); //записываем в файл
flock($fh, LOCK_UN); //снимаем блокировку
fclose($fh); //закрываем файл
?>