Как узнать, какие файлы PHP обслуживаются apache

Когда файл открывается в режиме добавления, ОС гарантирует, что все записи будут выполняться в конце. Таким образом, данные от одного модуля записи не будут перезаписывать данные от другого модуля записи.

Это применимо только в том случае, если файл открыт в режиме добавления, то есть с >> в оболочке.Если создатель файла открывает его с помощью > , то эта гарантия не действует, и возможна следующая последовательность:

  • Процесс 1: > out ; теперь в позиции 0
  • Процесс 2: >> out ; теперь в позиции 0
  • Процесс 1: запись hello , теперь в позиции 6
  • Процесс 2: запись world , это записано в позиции 6, а процесс 2 теперь находится в позиция 12
  • Процесс 1: запись ой , это записано в позиции 6, потому что положение файла процесса 1 не изменилось.

В Debian (с 2001 года или около того) файл .xsession-errors создается `/ etc / X11 / Xsession и открывается в режиме добавления, так что все в порядке:

  exec >> "$ ERRFILE" 2> & 1 
 

Я не знаю, относится ли это ко всем дистрибутивам, которые регистрируют в ~ / .xsession-errors .

Пока все будут открывать файл в режиме добавления, весь вывод будет присутствовать. Однако вывод может быть фрагментирован. На практике достаточно небольшие записи в обычный файл являются атомарными. Все, что меньше 512B, должно быть достаточно маленьким везде, и я думаю, что Linux гарантирует больше ». Таким образом, каждая строка журнала должна оставаться нетронутой, даже при одновременном использовании нескольких авторов, при условии, что они используют вывод с строчной буферизацией и что строки не слишком длинные.

¹ Обратите внимание, что POSIX не гарантирует ничего, кроме каналов.

1
14.10.2015, 00:29
0 ответов

Теги

Похожие вопросы