如果文件很大,PHP将失败fopen

时间:2014-11-11 12:26:59

标签: php google-app-engine

我正在使用PHP在Google App Engine上运行应用程序。

我正在使用以下代码从API下载文件:

$context = [
   "http" => [
   "method" => "GET",
   "header" => "Authorization: ".$token."\r\n",
   "follow_location"=>1,
   "timeout"=>600,
   "ignore_errors"=>1
              ]
            ];
$context = stream_context_create($context);
$sourceFile = fopen($location,"r", false,$context) or die("no handle");

此代码之后是一个块读取和写入另一个资源(基本上我将该文件存储在Google Storage上)。

$destinationFile = fopen($filename,"w");
while ($buffer = fread($sourceFile, 1048576)) {
      fwrite($destinationFile,$buffer);
} 

此代码的问题在于,如果文件较小(大约30 MB以下),它可以正常工作,但如果文件很大,则fopen会失败。我有“无处理”的消息。

这有点奇怪,因为我明确地避免使用file_get_contents将整个文件下载到内存中,我不明白为什么fopen应该失败!

你能帮帮我吗?感谢

1 个答案:

答案 0 :(得分:0)

限制为32兆字节。这就是它失败的原因。显然,该限制不适用于本地,因此它可以在开发服务器上运行。

https://cloud.google.com/appengine/docs/python/urlfetch/#Python_Quotas_and_limits