我在远程服务器上有大量(当前6MB,不断变大)xml文件,我经常在服务器上使用它。
每次将它下载到服务器会花费很多时间,所以我将它复制到本地文件。
目前,我正在使用file_get_contents
和file_put_contents
来执行此操作,但这意味着必须将整个文件加载到内存中。
是否有类似 readfile
的内容,只是直接将该xml文件流式传输到我服务器上的文件中?
答案 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中执行此操作。