我正在使用这段代码:
// write parts of file to file
file_put_contents($file,file_get_contents($ar, NULL, NULL, $s, $e));
将一个文件的一部分写入一个新文件。
stream_copy_to_stream
在不将文件加载到内存的情况下,我如何使用或任何其他方法来做到这一点?
如果您在 php.net 上进行一些搜索,您可以很容易地找到一个可以满足您需求的示例。您也可以使用我对您问题的评论的建议。
<?php
$src = fopen('http://www.example.com', 'r');
$dest1 = fopen('first1k.txt', 'w');
$dest2 = fopen('remainder.txt', 'w');
echo stream_copy_to_stream($src, $dest1, 1024) . " bytes copied to first1k.txt\n";
echo stream_copy_to_stream($src, $dest2) . " bytes copied to remainder.txt\n";
?>
但是,根据您的 PHP 版本,它似乎会占用大量内存。的方式fopen
,fread
然后fwrite
可以是
<?php
function customCopy($in, $out)
{
$size = 0;
while (!feof($in))
$size += fwrite($out, fread($in,8192));
return $size;
}
?>
假设$in
和$out
是文件处理程序资源。
你可以做类似的事情
$fp = fopen($ar, "r");
$out = fopen($file, "wb");
fseek($fp, $se);
while ($data = fread($fp, 2000)){
fwrite($out, $data);
}
fclose($out);
fclose($fp);