Как Zend_Log предотвращает состояние гонки во время записи сообщения журнала?

Я рассмотрел немного Zend_Log, который является модулем журнала Zend Framework, но я не видел, чтобы он использовал функцию flock, чтобы предотвратить состояние гонки, если в один и тот же файл записано несколько php-скриптов. Насколько я знаю, веб-приложение, основанное на Zend Framework, обрабатывает каждый запрос как отдельный процесс php, поэтому состояние не может быть разделено между этими процессами, поэтому необходимо поддерживать синхронизацию действий при записи файла.

Кто-нибудь знает причину почему?

1 ответ

Позвольте мне ответить на мой собственный вопрос, после проверки некоторых документов, в UNIX-подобной системе открытый файл O_APPEND является потоком и безопасным для записи в файл. Но Windows - исключение, возможно, PHP сделал какую-то оболочку для интерпретатора Windows.

Если открытый файл - PIPE или FIFO, то он отличается от чистого файла. Если размер байтов превышает размер PIPE_BUF, то он не атомарный.

Понимание одновременной записи файлов из нескольких процессов

O_APPEND документ

Другие вопросы по тегам