Открвает файл


(PECL eio >= 0.0.1dev)

eio_openОткрвает файл

Описание

resource eio_open ( string $path , int $flags , int $mode , int $pri , callable $callback [, mixed $data = NULL ] )

eio_open() открывает файл по заданному пути path в режиме доступа mode.

Список параметров

path

Путь к открываемому файлу.

Внимание

В некоторых SAPI (как, например, PHP-FPM) необходимо указывать полный путь. В противном случае произойдет отказ в работе функции.

flags

Комбинация из одной или нескольких констант EIO_O_*. Смысл констант EIO_O_* тот же, что и у соответствующих им констант O_* определенных в заголовочном файле С fnctl.h. По умолчанию принимается константа EIO_O_RDWR.

mode

Комбинация из одной или нескольких констант EIO_S_I* (через побитовое ИЛИ). Смысл констант тот же, что и у соответствующих им констант S_I* определенных в заголовочном файле С » sys/stat.h. Параметр обязателен, если создается новый файл. В противном случае, параметр игнорируется.

pri

Приоритет запросов: EIO_PRI_DEFAULT, EIO_PRI_MIN, EIO_PRI_MAX, или NULL. Если передан NULL, то pri устанавливается в EIO_PRI_DEFAULT.

callback

Функция callback вызывается при завершении запроса. Она должна удовлетворять следующему прототипу:

void callback(mixed $data, int $result[, resource $req]);
data

является пользовательскими данными, переданными в запросе.

result

содержит результирующее значение, зависящее от запроса; обычно это значение, возвращаемое соответствующим системным вызовом.

req

является опциональным запрашиваемым ресурсом, который может использоваться с такими функциями как eio_get_last_error()

data

Данные, которые будут передаваться в callback-функцию callback.

Возвращаемые значения

eio_open() возвращает дескриптор файла через аргумент result callback-функции callback. В случае неудачи result будет равен -1.

Примеры

Пример #1 Пример использования eio_open()

<?php
$temp_filename 
"eio-temp-file.tmp";

/* Будет вызываться после завершения работы eio_close() */
function my_close_cb($data$result) {
 
// Ноль указывает на успех операции
    
var_dump($result == 0);
 @
unlink($data);
}

/* Будет вызываться после завершения работы eio_open() */
function my_file_opened_callback($data$result) {
 
// $result должен содержать дескриптор файла
    
var_dump($result 0);

    if (
$result 0) {
  
// закрываем файл
        
eio_close($resultEIO_PRI_DEFAULT"my_close_cb"$data);
        
eio_event_loop();
    }
}

// создаем файл для чтения и записи
// запрещаем группе и другим пользователям делать что-либо с файлом
eio_open($temp_filenameEIO_O_CREAT EIO_O_RDWREIO_S_IRUSR EIO_S_IWUSR,
  
EIO_PRI_DEFAULT"my_file_opened_callback"$temp_filename);
eio_event_loop();
?>

Результатом выполнения данного примера будет что-то подобное:

 bool(true) bool(true) 

Смотрите также

  • eio_mknod