2011-01-20 2 views
2

Можно создать дубликат:
PHP Simultaneous File Writesphp, что произойдет, если одновременно добавятся 2 человека?

Здравствуйте,

Если у меня есть PHP скрипт и текстовый файл и 2 пользователей добавить длинный текстовую строку в текстовом файле на то же самое, что будет? будет ли он все еще проходить? он получает буферизацию, так что оба добавляются, или они отбрасываются?

+0

Возможный дубликат ** Синхронизация файлов PHP **. Ответ также должен охватывать этот вопрос: http://stackoverflow.com/questions/1209688/php-simultaneous-file-writes –

ответ

-1

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

Таким образом, при fopen() должно возникнуть задержка на одном клиенте или предупреждение/ошибка PHP. Зависит от того, как работает код и какие функции вы используете.

0

Используя fopen с параметром режима c, вы можете принудительно заблокировать файл до тех пор, пока не получите файл fclose. Это может запретить более одного человека писать в файл одновременно. Обычно файловая система будет делать это по умолчанию (в зависимости от конфигурации ОС), однако использование параметра режима будет охватывать ваши базы.

PHP: fopen

0

Специфика будет зависеть от платформы и размера данных, записываемых, но если оба процесса начинают писать в одной и той же позиции в файле, последний из которых часто выигрывает, так сказать. Но в итоге вы также можете чередовать чередование данных, особенно при написании больших объемов за раз.

Взгляните на flock(). Операционная система не полностью «делает это за вас».