PHP - Direct I/O dio_open() Function
The PHP Direct I/O dio_open() function is used to open a new filename file with specified flags permission and mode creation permission.
This method can open a file and return a new file descriptor for it, or -1 if an error occurs. If "flags" is O_CREAT, an optional third parameter mode can set a file mode (permission to create).
Syntax
Below is the syntax of the PHP Direct I/O dio_open() function −
resource dio_open ( string $filename , int $flags [, int $mode = 0 ] )
Parameters
Below are the parameters of the dio_open() function −
$filename − It is the path to the file you want to open.
$flags − It is the flags that shows how the file will be opened.
$mode − It is the permission to use if a new file is created.
The flags parameter can be one of O_RDONLY (open a file for reading), O_WRONLY (open a file for writing), and O_RDWR (open a file for reading and writing). The $flags parameter may also contain combinations of the following flags −
- O_RDONLY − To open the file for read access.
- O_WRONLY − To open the file for write access.
- O_RDWR − To open the file for both reading and writing.
- O_CREAT − Create a file if it does not exist.
- O_EXCL − When both O_CREAT and O_EXCL are set, dio_open() can fail if the file already exists.
- O_TRUNC − If the file exists, and is open for writing, it is truncated to zero sizes.
- O_APPEND − Write operations write data to the end of the file.
- O_NONBLOCK − Set non-blocking mode.
- O_NOCTTY − When opening a TTY device file, set O_NOCTTY to prevent the operating system from assigning the opened file as the process's controlling terminal.
Return Value
The dio_open() function returns a file descriptor resource on success, or FALSE on failure.
PHP Version
First introduced in core PHP 4.2.0, the dio_open() function continues to function easily in PHP 5.1.0.
Example 1
First we will show you the basic example of the PHP Direct I/O dio_open() function to open a file for reading only.
<?php
// Open a file descriptor
$fd = dio_open('/PHP/PhpProjects/myfile.txt', O_RDONLY);
if ($fd) {
echo "File opened successfully.";
dio_close($fd);
} else {
echo "Failed to open file.";
}
?>
Output
The above code will result something like this −
File opened successfully.
Example 2
In the below code we will use the dio_open() function and create a new file (if it does not exist) and open it for writing.
<?php
// Open a file descriptor
$fd = dio_open('/PHP/PhpProjects/myfile.txt', O_WRONLY | O_CREAT, 0644);
if ($fd) {
echo "File created and opened for writing.";
dio_close($fd);
} else {
echo "Failed to create and open file.";
}
?>
Output
After running the above program, it generates the following output −
File created and opened for writing.
Example 3
This example demonstrates how to open a file with the help of dio_open() method for both reading and writing.
<?php
// Open a file descriptor
$fd = dio_open('/PHP/PhpProjects/myfile.txt', O_RDWR);
if ($fd) {
echo "File opened for reading and writing.";
dio_close($fd);
} else {
echo "Failed to open file.";
}
?>
Output
This will create the below output −
File opened for reading and writing.
Example 4
In the following example, we are using the dio_open() function to open the file and truncate it upto the zero length.
<?php
// Open a file descriptor
$fd = dio_open('truncate.txt', O_WRONLY | O_TRUNC);
if ($fd) {
echo "File opened and truncated.";
dio_close($fd);
} else {
echo "Failed to open and truncate file.";
}
?>
Output
When the above program is executed, it will produce the below output −
File opened and truncated.