Citace od: Filip Jirsák kdy 30. 06. 2018, 19:37:47
Citace od: kvr kvr kdy 30. 06. 2018, 19:05:06
0 jako korektní hodnota je nesmysl, protože vždycky se musí něco zapsat.
Je možné, že nadstavba PHP chování mění, ale standardní POSIXový write může vrátit i nulu jako normální hodnotu – zapsat se nic nemusí. Při nedostatku místa OS vrátí -1 a v errno bude ENOSPC.
Při zápisu do souboru se bude OS snažit zapsat vše, ale nemusí se mu to podařit. O to je to horší, že to bude skoro vždy fungovat, ale pak se někdy ,,nepochopitelně" zapíše jen část.
POSIXový
write() může vrátit
0 v případě, že velikost zapisovaných dat byla
0. Pokud OS nemůže nic zapsat v případě neprázdných argumentů, má vrátit chybu
EAGAIN, aby program mohl počkat přes
select() (nebo podobnou funkci) na to, až zápis bude možný. Kdyby vracel
0, tak by to skončilo bez kontroly v busy loop.
To, že PHP si překládá chybu na
0, je jiná věc (nejspíš, aby se dalo snadno testovat v podmínce), ale v zásadě to na věci nic nemění - zapisovat prázdné data je stejně nesmysl.