我有一个在多个 Google Compute Engine (GCE) 实例上运行的 php 应用程序。该应用程序允许用户上传各种尺寸的图像,调整图像大小,然后将调整大小的图像(及其缩略图)存储在存储磁盘中,并将它们的元数据存储在数据库中。
我一直在寻找的是一种通过在 GCE 实例上运行的 php 应用程序将图像存储到 Google Cloud Storage (GCS) 的方法。此处提出了类似的问题,但没有给出明确的答案。任何有关实现此目标的最佳方式的提示或指导都将受到高度赞赏。
我有一个在多个 Google Compute Engine (GCE) 实例上运行的 php 应用程序。该应用程序允许用户上传各种尺寸的图像,调整图像大小,然后将调整大小的图像(及其缩略图)存储在存储磁盘中,并将它们的元数据存储在数据库中。
我一直在寻找的是一种通过在 GCE 实例上运行的 php 应用程序将图像存储到 Google Cloud Storage (GCS) 的方法。此处提出了类似的问题,但没有给出明确的答案。任何有关实现此目标的最佳方式的提示或指导都将受到高度赞赏。
您有多种选择,各有利弊。
您的第一个决定是用户如何将数据上传到您的服务。您可以选择让客户将他们的初始数据上传到 Google Cloud Storage,然后您的应用将在其中获取并转换它,或者您可以选择让他们直接将其上传到您的服务。假设您选择了第二个选项,并且您希望用户将数据直接流式传输到您的服务。
然后,您的服务将数据转换为不同的大小。伟大的。您现在有一个新文件。如果这是视频,您可能会关心在编码时将数据流式传输到 Google Cloud Storage,但对于图像,假设您希望在本地处理整个内容,然后将其存储在 GCS 中。
现在我们必须将文件放入 GCS。这是一个 PHP 应用程序,正如您所确定的,您的主要三个选项是:
使用 gsutil 将是这里最简单的解决方案。在 GCE 上,它会自动为您的服务帐户选择适当的凭据,并且它有几个有用的性能优化和调整,如果没有额外的工作(例如,多线程上传),API 的原始使用可能无法做到。此外,它已经安装在您的 GCE 实例上。
PHP API 的优势在于它是进程内的,并提供了更细粒度的编程控制。随着您的逻辑变得越来越复杂,您最终可能更喜欢这种方法。不过,让它与 gsutil 一样好可能需要一些额外的工作。
这种选择类似于通过 SCP 使用“scp”命令行应用程序或使用 libssh2 库来复制文件。
tl;博士; 除非您需要更直接地处理与 GCS 的交互,否则使用 gsutil 是一个好主意。