Я рассмотрел немного Zend_Log, который является модулем журнала Zend Framework, но я не видел, чтобы он использовал функцию flock для предотвращения состояния гонки, если в один и тот же файл записано несколько php-скриптов.
Насколько я знаю, веб-приложение, основанное на Zend Framework, обрабатывает каждый запрос как отдельный процесс php, поэтому состояние не может быть разделено между этими процессами, поэтому необходимо синхронизировать действие записи файла.
Кто-нибудь знает причину почему?
Позвольте мне ответить на мой собственный вопрос, после проверки некоторых документов, в UNIX-подобной системе открытый файл O_APPEND является потоком и безопасным для записи в файл. Но Windows — исключение, возможно, PHP сделал какую-то оболочку для интерпретатора Windows.
Если открытый файл — PIPE или FIFO, то он отличается от чистого файла. Если размер байтов превышает размер PIPE_BUF, то он не атомарный.
Понимание одновременной записи файлов из нескольких процессов
Других решений пока нет …