在PHP中复制大文件(超过2 GB)

时间:2011-07-03 18:11:54

标签: php file copy

我需要通过PHP复制一些大文件(6 GB)。我怎样才能做到这一点? Copy()函数无法执行此操作。

我在Windows 32/64上使用PHP 5.3。

6 个答案:

答案 0 :(得分:20)

这应该这样做。

function chunked_copy($from, $to) {
    # 1 meg at a time, you can adjust this.
    $buffer_size = 1048576; 
    $ret = 0;
    $fin = fopen($from, "rb");
    $fout = fopen($to, "w");
    while(!feof($fin)) {
        $ret += fwrite($fout, fread($fin, $buffer_size));
    }
    fclose($fin);
    fclose($fout);
    return $ret; # return number of bytes written
}

答案 1 :(得分:3)

如果copy不起作用,您可以尝试使用

示例

stream_copy_to_stream(
    fopen('/path/to/input/file.txt', 'r'),
    fopen('/path/to/output/file.txt', 'w+')
);

答案 2 :(得分:2)

最新版本的PHP复制带有块的文件,因此今天您可以安全地使用php copy()函数

答案 3 :(得分:1)

如果它是linux机器,你可以使用exec()

$srcFile = escapeshellarg($pathToSrcFile);
$trgFile = escapeshellarg($pathToTrgFile);

exec("cp $srcFile $trgFile");

答案 4 :(得分:1)

我将X字节复制X字节(每次迭代几次) X将是最优化的尺寸,取决于您的机器 我不会通过网络服务器,而是作为一个独立的脚本,通过cron或一次性调用它(cli)。

答案 5 :(得分:0)

如果你想将文件从一个服务器复制到另一个服务器并且你对这两个服务器都有ftp访问权限,那么你可以在源系统上使用ftp'put'命令并轻松地将大文件发送到另一个系统。