【问题标题】:Best solution / practice for temp files with Google App Engine PHP?使用 Google App Engine PHP 处理临时文件的最佳解决方案/实践?
【发布时间】:2015-08-29 14:15:20
【问题描述】:

请问在 GAE 上使用 PHP 的临时文件的普遍接受的智慧/技术解决方案是什么?

我需要使用 PHP 存储和处理图像(大小为几百 K),该图像暂时(例如

我的想法是尝试将临时文件存储在内存中(使用 tempnam() 等),如果失败(例如,该实例上的内存已满),立即尝试使用其他存储来代替运行。问题是什么?图像必须可作为 CURL 访问它的文件(我认为?)并发送到其他地方,所以 Memcache 不是一个选项(不能将数据作为文件访问以传递到 CURL - 或者我可以吗?),但是例如云存储是(通过 'gs://[bucket-name]/...')。问题是,如果我刚刚将文件写入存储,它是否可以立即读取?这也是一笔巨大的成本......

非常感谢任何帮助!

谢谢, 亚历克斯

【问题讨论】:

  • GCS 可能是您最好的选择。鉴于图像相对较小,在大多数情况下您不应该耗尽内存。
  • 答案将取决于图像的来源(例如,它是 POST / 上传吗?)。还有你正在做的亲属狗图像处理以及它的去向。你能提供更多细节吗?我以前使用过管道的全内存图像处理,但我不知道您的用例是否允许这样做。更多细节会非常有用。
  • 谢谢大家。通过 POST 直接从用户的浏览器接收图像。然后它在服务器上的内存中被操纵。然后需要将其写入光盘片刻,以便可以通过 CURL 函数将其读回以 POST 到另一个站点。如果我可以让 CURL 操作直接从 GD 图像输出中读取,那么我可以完全省去写入文件位,但由于它是我用来执行最终 POST 的第 3 方 SDK,我不确定这是否是可能与否...
  • 将云存储用于暂时存在的临时文件的问题是:1) 我会产生什么存储成本(例如文件存储 1 秒然后删除 - 云存储计费计算在内那是 - 1 秒?1 小时?1 天?)和 2.)如果我将文件写入 Cloud Storage,多久后它可以再次读取?

标签: php google-app-engine curl memcached temp


【解决方案1】:

GCS 提供了一个默认的应用程序免费存储桶,该存储桶也与您的应用程序相关联。此存储桶没有配额。

使用默认存储桶

使用默认存储桶:

确定您的应用是否已经创建了默认存储桶:

  • 访问 App Engine 管理控制台并选择您的应用。
  • 在左侧导航窗格中选择应用程序设置。
  • 如果您的应用具有 默认存储桶,应用程序设置页面将包含标签 Google Cloud Storage 存储桶,其下方列出了存储桶名称。这 默认存储桶名称通常为 .appspot.com,其中 是您的应用程序 ID。

如果您的应用没有默认存储桶, 创建一个:

  • 访问 App Engine 管理控制台并选择您的应用。
  • 在左侧导航窗格中选择应用程序设置并滚动到 页面底部到 Cloud Integration
  • 单击创建并等待 要创建的存储桶。桶已完全设置并准备就绪 供使用。

参考:https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/activate#using_a_default_bucket

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    相关资源
    最近更新 更多