Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将大型远程文件传输到google云存储?_Php_Google App Engine_Google Cloud Storage - Fatal编程技术网

Php 如何将大型远程文件传输到google云存储?

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作业或延迟库运行的,否则,如果作为正常请求运行,

我正在从事一个项目,需要从远程平台提取大量数据,并将其存入谷歌云存储。此平台通过特定API提供HTTPS下载链接。 在本地下载文件,然后将文件上传到GC是我不能使用的选项

我一直在使用AppEngine生成所需的下载链接,并将这些文件传输到google云存储中(使用基本PHP文件_get_contents/fwrite)。
对于小文件(大约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的文件。我猜这不是因为超时,而是因为其他一些限制?