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