使用 Google App Engine php55 或 php7 将任意大文件下载到云存储的解决方案是什么?

2024-03-24

我有一个谷歌应用程序引擎 php55 服务,它定期检查公共网站并下载文件。该文件通常很小(

<?php
$strSource = 'https://example.com/file.zip';

$strBucket = 'bucket-1234';
$strDirectory = '/path/to/file/'; // Google Cloud Storage directory
$strName = 'file.zip';
$strDestination = 'gs://' . $strBucket . '.appspot.com' . $strDirectory . $strName;

copy($strSource,$strDestination);
?>

我发现这个文件有时会更大(超过32MB 响应大小限制 https://cloud.google.com/appengine/docs/standard/php/outbound-requests#quotas_and_limits_for_url_fetch)。如何编写此脚本来处理文件(无论是 1MB 还是 100MB)?

我看到有人推荐“斑点存储区 https://stackoverflow.com/a/6899157,”这是我没有经验的事情。即使我理解该解决方案(似乎专注于一个非常不同的用例) https://cloud.google.com/appengine/docs/standard/java/blobstore/,它似乎根本不适用于 PHP。我错过了什么吗?


我建议您使用 Compute Engine 实例,因为 GAE 对响应大小有 32MB 的限制。 我发现这个帖子 https://stackoverflow.com/a/45132475/11475279,用户检查是否有新文件可用,如果有,则直接上传到 GCS。

为了做到这一点,并按照文档 https://cloud.google.com/compute/docs/disks/gcs-buckets,您应该在 GCE 中创建一个实例,并且安装并配置客户端库 https://cloud.google.com/storage/docs/reference/libraries#client-libraries-install-php对于您要使用的语言(正如您在帖子中提到的您使用的是 PHP,所有链接都将引用该语言,但请记住,您也可以选择其他语言,如 C++、Java、Python... .)。

您可以在此处找到有关如何使用 PHP 的示例将对象上传到 GCS https://cloud.google.com/storage/docs/uploading-objects:

function upload_object($bucketName, $objectName, $source)
{
    $storage = new StorageClient();
    $file = fopen($source, 'r');
    $bucket = $storage->bucket($bucketName);
    $object = $bucket->upload($file, [
        'name' => $objectName
    ]);
    printf('Uploaded %s to gs://%s/%s' . PHP_EOL, basename($source), $bucketName, $objectName);
}

您还可以在以下位置找到其他示例Github 存储库 https://github.com/GoogleCloudPlatform/php-docs-samples/tree/master/storage/src来自谷歌云平台。

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Google App Engine php55 或 php7 将任意大文件下载到云存储的解决方案是什么? 的相关文章

随机推荐