PHP - 将远程文件复制到本地文件系统的最佳方法

时间:2014-05-01 15:11:08

标签: php

我在远程服务器上有大量(当前6MB,不断变大)xml文件,我经常在服务器上使用它。

每次将它下载到服务器会花费很多时间,所以我将它复制到本地文件。

目前,我正在使用file_get_contentsfile_put_contents来执行此操作,但这意味着必须将整个文件加载到内存中。

是否有类似 readfile 的内容,只是直接将该xml文件流式传输到我服务器上的文件中?

1 个答案:

答案 0 :(得分:2)

$remote = fopen('http://...', 'r');
$local  = fopen('myfile.xml', 'w');

stream_copy_to_stream($remote, $local);

http://php.net/stream_copy_to_stream。更简单的替代方法实际上是使用copy

如果可能的话,您可能希望使用rsync,这可以通过仅传输两个文件之间的差异来提高效率。我使用cron作业设置rsync而不是在PHP中执行此操作。