查詢

eio_sendfile()函式—用法及示例

「 在檔案描述符之間進行零複製檔案傳輸 」


函式名稱:eio_sendfile()

適用版本:PHP 7.4.0及以上版本

函式描述:eio_sendfile()函式用於在檔案描述符之間進行零複製檔案傳輸。

用法:

eio_sendfile(resource $out_fd, resource $in_fd, int $offset, int $length, callable $callback, mixed $data = NULL);

引數:

  1. $out_fd:目標檔案描述符,需要支援寫入操作的檔案描述符。
  2. $in_fd:原始檔描述符,需要支援讀取操作的檔案描述符。
  3. $offset:從原始檔的偏移量開始傳輸資料。
  4. $length:傳輸的資料長度。
  5. $callback:資料傳輸完成後的回撥函式,接收一個參數列示傳輸結果。
  6. $data:可選引數,將傳遞給回撥函式的額外資料。

示例:

$out_fd = fopen('destination.txt', 'w'); // 開啟目標檔案以寫入
$in_fd = fopen('source.txt', 'r'); // 開啟原始檔以讀取

// 呼叫 eio_sendfile() 函式進行檔案傳輸
eio_sendfile($out_fd, $in_fd, 0, filesize('source.txt'), function($result) use ($out_fd, $in_fd) {
    if ($result === 0) {
        echo "檔案傳輸成功!";
    } else {
        echo "檔案傳輸失敗!";
    }

    fclose($out_fd); // 關閉目標檔案描述符
    fclose($in_fd); // 關閉原始檔描述符
});

注意事項:

  1. 原始檔和目標檔案都需要使用合適的檔案開啟模式(例如讀取、寫入模式)開啟。
  2. 資料傳輸的長度不能超過原始檔的總大小。
  3. 回撥函式中的$result引數將是傳輸的結果,為0表示傳輸成功,其他值表示傳輸失敗。
補充糾錯
上一個函式: eio_rmdir()函式
下一個函式: eio_seek()函式
熱門PHP函式
分享連結