(PECL eio >= 0.0.1dev)
eio_open — 打开文件
eio_open() 以访问模式 mode
打开 path
指定的文件。
path
要打开的文件的路径。
在某些SAPI(例如*PHP-FPM*)中,如果不指定完整路径,可能会失败。
flags
一个或多个 *EIO_O_* 常量,或它们的组合。*EIO_O_* 常量与在 fnctl.h
C 头文件中定义的相应的 *O_* 常量具有相同的含义。默认为 EIO_O_RDWR
。
mode
一个或多个 *EIO_S_I* 常量,或它们的组合(通过按位或运算符)。这些常量与在 » 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) {
// 0 表示成功
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)