Открываем файл и устанавливаем эксклюзивный лок. Когда один скрипт работает с этим файлом, другому при попытке открыть его будет выдаваться ошибка. Суть в том что делаем бесконечный цикл, если выдается ошибка, то пытаемся открыть снова пока не сможем открыть. Только желательно ставить не бесконечное время жизни скрипта.
set_time_limit ( сек);
while(true){
if ($fh = fopen($file, 'r+')) {
echo "File opened successful\n";
if (flock($fh, LOCK_EX)) {
echo "Successfully locked filed with exclusive lock\n";
flock($fh, LOCK_UN);
} else {
fclose($fh);
continue;
}
fclose($fh);
break;
}
}