UltraMax:
Alexey333, ты не объяснишь мне, при чем тут СУБД Cache (и ее описание) - к функции flock на PHP?
Я же ясно написал "хоть и не из PHP". Сам принцип важен!
Ну раз тебе не понятно, то напечатаю отрывок из книги Д. Котерова "Самоучитель PHP 4":
"Мы решили ровно половину нашей задачи. Действительно, теперь данные из нескольких процессов-писателей не будут перемешиваться, но как быть с читателями?........................
........
Существуют два метода обхода этой проблемы. Первый - это использовать все ту же исключительную блокировку. Действительно, кто сказал, что исключительную блокировку можно применять только в процессах, изменяющих файл? Ведь функция flock() не знает, что будет выполнено с файлом, для которого она вызвана." Однако этот метод довольно-таки неудачен, и вот по какой причине. Представьте, что процессов-читателей много, а писателей - мало, и к тому же писатели еще и вызываются, скажем, раз в пару минут, а не постоянно как читатели. В случае использования исключительной блокировки для процессов-читателей, довольно интенсивно обращающихся к файлу, мы очень скоро получим целый их рой, висящий, недовольно гудя, в очереди, пока очередному процессу разрешат читать. Но ведь никакой аварии не случится, если один и тот же файл будут читать и сразу все процессы этого роя, правда? Ведь чтение из файла его не изменяет.
Итак, предоставив исключительную блокировку для читателей, мы потенциально получаем проблемы с производительностью, перерастающие в КАТАСТРОФУ, когда процессов-читателей становится больше некоторого определенного порога.