English | 简体中文 | 繁體中文
查询

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函数
分享链接