S
S
Sergey Pugovkin2016-10-22 23:27:06
PHP
Sergey Pugovkin, 2016-10-22 23:27:06

Why is writing data to the end of a file atomic if the data does not exceed the block size of the file system?

php.net/manual/en/function.fwrite.php

Если дескриптор handle был открыт функцией fopen() в режиме "добавление в конец", то вызовы fwrite() будут атомарными (за исключением случая, если размер string превысит размер блока файловой системы, на некоторых платформах, и пока файл хранится на локальной файловой системе). Т.е. нет необходимости блокировать ресурс с помощью flock() перед вызовом fwrite(), и все данные будут записаны без прерываний.

>будут атомарными
Почему?
>на некоторых платформах
Каких? От чего это зависит?

Answer the question

In order to leave comments, you need to log in

4 answer(s)
Максим Мосейчук, 2016-10-24
@Driver86

Because that's how a hard drive works. The hard drive can read or write at least 1 sector. It cannot read or write 1 byte. The sector size already depends on the hardware.
The physical sector size is complemented by the logical size of the file system cluster. Usually it is also written / read atomically, but this is already an artificial software limitation. And it can be removed by the scheduler.
For example, the sector size is 512 bytes and the cluster size is 1024 bytes.
You are reading a file that is 1 byte long.
Because the cluster size is 1024, then the file system will request 2 sectors of 512 bytes from the disk.
Then you decide to change 1 byte and write.
Файловая система отправит на запись 2 сектора по 512 байт. Тут в действие может вступить планировщик, определить какие данные изменились и реально на запись отправить лишь 1 сектор.

A
Artem, 2016-10-22
@Jump

Потому что она атомарна. Ее нельзя разбить на несколько более мелких.
Странно бы было если бы она была не атомарна.

P
Puma Thailand, 2016-10-23
@opium

because one block is written
куда еще меньше то

A
Anthony, 2016-10-24
@RiseOfDeath

If it's simple - because the FS driver guarantees the atomicity of this operation. (Otherwise why the hell is he needed at all?)
Если сложнее - то в двух словах не описать, гуглите.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question