(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* 常數之一,或其組合(透過位元 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)