【问题标题】:uploading images to php app on GCE and storing them onto GCS将图像上传到 GCE 上的 php 应用程序并将它们存储到 GCS
【发布时间】:2014-10-17 22:59:15
【问题描述】:

我有一个在多个 Google Compute Engine (GCE) 实例上运行的 php 应用程序。该应用程序允许用户上传各种大小的图像,调整图像大小,然后将调整大小的图像(及其缩略图)存储在存储磁盘中,并将它们的元数据存储在数据库中。

我一直试图找到一种通过在 GCE 实例上运行的 php 应用程序将图像存储到 Google Cloud Storage (GCS) 的方法。有人问过类似的问题here,但那里没有给出明确的答案。非常感谢任何有关实现此目标的最佳方式的提示或指导。

【问题讨论】:

  • 过去几个小时我一直在搜索和阅读有关 google API 和 gsutil 的信息。看来我可以使用 PHP google API 或 gsutil。这些图像最初将上传到我的 php 应用程序以调整大小/创建缩略图。哪个更好/更有效?使用 gsutil 或 php google api 将文件复制到谷歌云存储实例?

标签: google-cloud-storage google-compute-engine gsutil


【解决方案1】:

您有多种选择,各有利弊。

您的第一个决定是用户如何将数据上传到您的服务。您可以选择让客户将他们的初始数据上传到 Google Cloud Storage,然后您的应用会在其中获取并转换它,或者您可以选择让他们直接将其上传到您的服务。假设您选择了第二个选项,并且您希望用户将数据直接流式传输到您的服务。

然后,您的服务会将数据转换为不同的大小。伟大的。您现在有一个新文件。如果这是视频,您可能会关心在编码时将数据流式传输到 Google Cloud Storage,但对于图像,假设您希望在本地处理整个内容,然后将其存储在 GCS 中。

现在我们必须将文件导入 GCS。这是一个 PHP 应用程序,正如您所确定的,您的主要三个选项是:

  1. 通过 Google API PHP 客户端调用 GCS JSON API。
  2. 通过自定义代码调用 GCS XML 或 JSON API。
  3. 使用 gsutil。

使用 gsutil 将是这里最简单的解决方案。在 GCE 上,它会自动为您的服务帐户选择适当的凭据,并且它有几个有用的性能优化和调整,如果没有额外的工作(例如,多线程上传),原始使用 API 可能无法做到。此外,它已经安装在您的 GCE 实例上。

PHP API 的优势在于它是进程内的,并提供更细粒度的编程控制。随着您的逻辑变得越来越复杂,您最终可能更喜欢这种方法。不过,要让它与 gsutil 一样好,可能需要做一些额外的工作。

这种选择类似于通过 SCP 使用“scp”命令行应用程序或使用 libssh2 库复制文件。

tl;博士;除非您需要更直接地处理与 GCS 的交互,否则使用 gsutil 是个好主意。

【讨论】:

  • 我按照您的建议结束了使用 PHP API。非常感谢您提供的信息丰富的评论。
猜你喜欢
  • 1970-01-01
  • 2016-09-23
  • 2016-11-20
  • 1970-01-01
  • 2019-04-30
  • 2019-04-07
  • 2015-06-13
  • 2015-03-02
  • 2022-07-02
相关资源
最近更新 更多