Я запускаю приложение в Google App Engine, на PHP.
Я использую следующий код для загрузки файла из 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");
Затем за этим кодом следует чтение и запись chunk на другой ресурс (в основном я храню файл в Google Storage).
$destinationFile = fopen($filename,"w");
while ($buffer = fread($sourceFile, 1048576)) {
fwrite($destinationFile,$buffer);
}
Проблема с этим кодом заключается в том, что он работает отлично, если файл небольшой (около 30 МБ), но fopen терпит неудачу, если файл большой. У меня есть сообщение "no handle".
Это странно, потому что я явно избегал использовать файл_get_contents, чтобы загрузить весь файл в памяти, и я не понимаю, почему fopen не сработает!
Вы можете мне помочь? благодаря
Предел составляет 32 мегабайта. Вот почему он терпит неудачу. Предел, по-видимому, не применяется локально, поэтому он работает на dev-сервере.
https://cloud.google.com/appengine/docs/python/urlfetch/#Python_Quotas_and_limits