函式名稱: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);
引數:
- $out_fd:目標檔案描述符,需要支援寫入操作的檔案描述符。
- $in_fd:原始檔描述符,需要支援讀取操作的檔案描述符。
- $offset:從原始檔的偏移量開始傳輸資料。
- $length:傳輸的資料長度。
- $callback:資料傳輸完成後的回撥函式,接收一個參數列示傳輸結果。
- $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); // 關閉原始檔描述符
});
注意事項:
- 原始檔和目標檔案都需要使用合適的檔案開啟模式(例如讀取、寫入模式)開啟。
- 資料傳輸的長度不能超過原始檔的總大小。
- 回撥函式中的$result引數將是傳輸的結果,為0表示傳輸成功,其他值表示傳輸失敗。