Please note that dio_open()/dio_write()/dio_close() is *faster* than fopen()/fwrite()/fclose() for files.
fwrite() has to manage a 8k buffer, while dio_write() just issue a single write(). The end result is less system calls and less memory access.
Also, giving the full size to write() as with dio_write() let filesystems properly use preallocation in order to avoid fragmentation.dio_open
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
dio_open
Референца за `function.dio-open.php` со подобрена типографија и навигација.
dio_open
(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)
dio_open — Отвара датотека (креирајќи ја доколку е потребно) на пониско ниво од функциите за влез/излез на C библиотеката.
= NULL
dio_open() отвора датотека и враќа нов дескриптор на датотека за неа.
Параметри
filename-
Патот на датотеката што треба да се отвори.
flags-
На
flagsпараметарот е вредност со бинарно ИЛИ која опфаќа знаменца од следната листа. Оваа вредност must вклучува едно одO_RDONLY,O_WRONLY, илиO_RDWR. Дополнително, може да вклучува каква било комбинација од другите знаменца од оваа листа.-
O_RDONLY- ја отвора датотеката за пристап за читање. -
O_WRONLY- ја отвора датотеката за пристап за запишување. -
O_RDWR- ја отвора датотеката за читање и запишување. -
O_CREAT- ја креира датотеката, доколку веќе не постои. -
O_EXCL- ако и дветеO_CREATandO_EXCLсе поставени и датотеката веќе постои, dio_open() ќе откаже. -
O_TRUNC- ако датотеката постои и е отворена за пристап за запишување, датотеката ќе биде скратена на нула должина. -
O_APPEND- операциите за запишување запишуваат податоци на крајот од датотеката. -
O_NONBLOCK- поставува режим без блокирање. -
O_NOCTTY- спречува оперативниот систем да ја додели отворената датотека како контролен терминал на процесот при отворање датотека со уред ТТИ.
-
mode-
Враќа
flagscontainsO_CREAT,modeќе ги постави дозволите на датотеката (дозволи за креирање).modeе потребно за правилно работење когаO_CREATе специфицирано воflagsи се игнорира инаку.Вистинските дозволи доделени на креираната датотека ќе бидат засегнати од процесот umask поставување како и обично.
Вратени вредности
Дескриптор на датотека или false при грешка.
Примери
Пример #1 Отворање дескриптор на датотека
<?php
$fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);
dio_close($fd);
?>Белешки од корисници 3 белешки
One of the prominent reasons to use direct IO, is for it's ability to do actual direct IO, bypassing the operating system cache and getting the data from the disk directly.
The flag to do that (O_DIRECT) is missing from the documentation above. Maybe for good reasons, because this type of IO only works on blockdevices, not on files, and should only be used if you are **really** sure what you are doing.