【问题标题】:In PHP is there a way that the server can download a file directly to the filesystem? [closed]在 PHP 中有没有一种方法可以让服务器直接将文件下载到文件系统? [关闭]
【发布时间】:2012-11-05 13:02:00
【问题描述】:

我需要我的服务器下载一个文件并将其写入服务器的文件系统。问题是我见过的所有 PHP 示例都将文件下载到服务器 RAM 中,然后写入文件。

由于我正在处理大文件,我希望 PHP 从其他服务器读取文件并立即将读取的内容写入本地文件。

【问题讨论】:

  • file_put_contents('/path/to/file', file_get_contents('http://example.com/file'));?
  • 您尚未分享与您相关的示例,但在此网站上,我们有 QA 材料,展示了如何不使用与文件总大小一样大的 RAM 缓冲区。此外,PHP 手册中充满了相关的功能和示例。我真的很想知道是什么挡住了你的路。 php.net/filesystem
  • @jtheman - 我在 Amazon EC2 服务器上使用 Windows,我们正准备切换到 Linux。不幸的是,我们可以连接到一些 FTP 服务器,但是其他 FTP 服务器无法通过 NAT 服务器建立数据通道连接,并且不允许我们使用被动连接,所以对于这个,我们通过 PHP 完成了/HTTP 使用以下 Kamil 的示例。如果我可以完全控制另一台服务器,我会安装一个在 EC2 上运行的客户端可以连接的 FTP 服务器。

标签: php download server-to-server


【解决方案1】:

像这样使用curl

<?php
 $url  = 'http://www.example.com/a-large-file.zip';
 $path = '/path/to/a-large-file.zip';

 $fp = fopen($path, 'w');

 $ch = curl_init($url);
 curl_setopt($ch, CURLOPT_FILE, $fp);

 $data = curl_exec($ch);

 curl_close($ch);
 fclose($fp);
?>

【讨论】:

  • +1 表示CURLOPT_FILE。我不知道你能做到。
  • @RocketHazmat 谢谢,我将它用于大文件 - 将数据下载到内存中会降低服务器性能和/或内存要求不可接受
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多