Php 如何将大型远程文件传输到google云存储?
我正在从事一个项目,需要从远程平台提取大量数据,并将其存入谷歌云存储。此平台通过特定API提供HTTPS下载链接。 在本地下载文件,然后将文件上传到GC是我不能使用的选项 我一直在使用AppEngine生成所需的下载链接,并将这些文件传输到google云存储中(使用基本PHP文件_get_contents/fwrite)。Php 如何将大型远程文件传输到google云存储?,php,google-app-engine,google-cloud-storage,Php,Google App Engine,Google Cloud Storage,我正在从事一个项目,需要从远程平台提取大量数据,并将其存入谷歌云存储。此平台通过特定API提供HTTPS下载链接。 在本地下载文件,然后将文件上传到GC是我不能使用的选项 我一直在使用AppEngine生成所需的下载链接,并将这些文件传输到google云存储中(使用基本PHP文件_get_contents/fwrite)。 对于小文件(大约20MB),可以正常工作,对于较大的文件,只能写一个空文件。因此,第1步,确保您的代码是通过任务队列、cron作业或延迟库运行的,否则,如果作为正常请求运行,
对于小文件(大约20MB),可以正常工作,对于较大的文件,只能写一个空文件。因此,第1步,确保您的代码是通过任务队列、cron作业或延迟库运行的,否则,如果作为正常请求运行,它将在大约30秒后超时 在应用程序引擎上,和受到URL获取超时的影响,我认为这相当短(10秒?)。您可以使用参数,该参数应该能够稍微增加它,但这对您来说可能仍然不够。可能是这样的:
$context = stream_context_create(array('http'=>
array(
'timeout' => 1200, // 20 minutes
)
));
echo file_get_contents('http://www.example.com/', false, $context);
如果您继续运行URL Fetch的底层约束,您可能会转而使用通过sockets API运行的cURL。如果下载时间超过10分钟,您可能需要更改应用程序的
服务
,以使用基本或手动缩放实例,而不是自动缩放实例。自动缩放实例在10分钟后超时。手动和基本实例可以有长达24小时的任务。您可以创建一个单独的“worker”服务来保存此代码,并将应用程序的其余部分保留在默认服务中 非常感谢您的反馈。这除了上传最大文件大小之外,还可以让我最多上传32MB的文件。我猜这不是因为超时,而是因为其他一些限制?