2024 年日本 PHP 研討會

eio_open

(PECL eio >= 0.0.1dev)

eio_open開啟檔案

說明

eio_open(
    字串 $path,
    整數 $flags,
    整數 $mode,
    整數 $pri,
    可呼叫 $callback,
    混合 $data = NULL
): 資源

eio_open() 以存取模式 mode 開啟由 path 指定的檔案,

參數

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_DEFAULTEIO_PRI_MINEIO_PRI_MAXnull。如果傳入 nullpri 會在內部設為 EIO_PRI_DEFAULT

callback(回呼函式)

當請求完成時,會呼叫 callback 函式。它應該符合以下原型:

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

傳遞給請求的自訂資料。

result(結果)

請求的特定結果值;基本上是對應系統呼叫所返回的值。

req(請求)

這是可選的請求資源,可用於 eio_get_last_error() 等函式。

data(資料)

傳遞給 callback 的任意變數。

傳回值

成功時,eio_open() 會在 callbackresult 參數中返回檔案描述符;否則,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)

另請參閱

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top