我需要通过PHP复制一个大文件(6 GB),该如何做呢?Copy()
函数无法实现。
我正在使用 PHP 5.3 在 Windows 32/64 上。
这应该可以做到。
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
}
如果 copy
不起作用,您可以尝试使用:
示例
stream_copy_to_stream(
fopen('/path/to/input/file.txt', 'r'),
fopen('/path/to/output/file.txt', 'w+')
);
最近版本的PHP使用分块复制文件,因此您可以安全地使用php copy()
函数
copy()
复制4GB文件时卡在了2.7GB。 - Flash Thunder如果是 Linux 机器,您可以使用 exec()
。
$srcFile = escapeshellarg($pathToSrcFile);
$trgFile = escapeshellarg($pathToTrgFile);
exec("cp $srcFile $trgFile");
我会逐个 X 字节地复制它(每次迭代几兆字节)。 X 将是最优化的大小,这取决于您的机器。 而且我不会通过 Web 服务器进行操作,而是作为独立脚本运行,通过 cron 或一次性调用它(cli)。
copy
做不到这一点?你是否收到错误消息? - Gordon