(PECL eio >= 0.0.1dev)
eio_open — 打开文件
eio_open() 打开由 path
指定的文件,访问模式为 mode
,具有
path
要打开的文件的路径。
在某些 SAPI(例如 PHP-FPM)中,如果未指定完整路径,则可能会失败。
flags
一个或多个 EIO_O_* 常量,或它们的组合。EIO_O_* 常量的含义与其在 fnctl.h
C 头文件中定义的相应 O_* 对应物相同。默认值为 EIO_O_RDWR
。
mode
一个或多个 EIO_S_I* 常量,或它们的组合(通过按位 OR 运算符)。这些常量的含义与其在 » sys/stat.h C 头文件中定义的 S_I* 对应物相同。如果创建了文件,则需要此参数。否则忽略。
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
的任意变量。
eio_open() 在成功时在 callback
参数的 result
参数中返回文件描述符;否则,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($result, EIO_PRI_DEFAULT, "my_close_cb", $data);
eio_event_loop();
}
}
// 创建新的文件用于读写
// 禁止组和其他用户对该文件进行任何操作
eio_open($temp_filename, EIO_O_CREAT | EIO_O_RDWR, EIO_S_IRUSR | EIO_S_IWUSR,
EIO_PRI_DEFAULT, "my_file_opened_callback", $temp_filename);
eio_event_loop();
?>
上面的示例将输出类似于以下内容
bool(true) bool(true)