Мне нужно скопировать большой файл (6 ГБ) через PHP. Как я могу это сделать?
Функция Copy() не может этого сделать.
Я использую PHP 5.3 в Windows 32/64.
Ответ 1
Это должно сделать это.
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
}
Я бы скопировал его X байтом по X байту (по несколько мегаграмм каждая итерация).
X будет самым оптимизированным размером, который зависит от вашей машины.
И я бы сделал это не через веб-сервер, а как самостоятельный script, запустив cron или один раз на него (cli).
Ответ 5
Если вы хотите скопировать файлы с одного сервера на другой, и у вас есть доступ к ftp на обоих из них, вы можете просто использовать команду ftp 'put' в исходной системе и легко отправить большой файл в другую систему.