我正在使用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应该失败!
你能帮帮我吗?感谢答案 0 :(得分:0)
限制为32兆字节。这就是它失败的原因。显然,该限制不适用于本地,因此它可以在开发服务器上运行。
https://cloud.google.com/appengine/docs/python/urlfetch/#Python_Quotas_and_limits