【发布时间】:2014-08-05 11:08:57
【问题描述】:
我们目前正在开发适用于 iOS 和 Android 的移动应用。为此,我们需要一个稳定的网络服务。
要求:- 基于 PHP 和 MySQL,必须超快,必须可扩展
我创建了一个带有多个端点的自定义编码的简单 Web 服务,以允许将数据从应用程序传递到我们的数据库,反之亦然。
我的问题:
对于正常请求(例如,更新数据库字段或执行 INSERT INTO),我的自定义编码解决方案的平均响应时间低于 100 毫秒(使用 newrelic 测量)。但是,这是没有任何负载的(每天少于 100 个用户)。当我们创建出站请求(特别是使用 SendGrid PHP 框架发送电子邮件)时,我们看到响应时间 > 1000 毫秒。看来该请求正在“等待”来自 Sendgrid 的响应。是否可以告诉脚本不要“等待响应”?这并不理想。我的想法是将所有“待处理”请求存储到单独的表中,然后使用 cron 运行所有“待处理”请求并将它们标记为“已完成”。这是一个可行的解决方案吗?每分钟一个 cron 是否足以处理请求(每封电子邮件可能延迟 1 分钟)?
一如既往,非常感谢任何回复或建议。提前致谢!
【问题讨论】:
-
您可以将电子邮件的处理移至移动应用程序。您可以利用 Obj-c 库和 Java 库进行快速集成。
-
您好库纳尔,感谢您的回复。我们知道本机应用程序环境的库。但是,我们希望在我们的网络服务端保留所有电子邮件发送,因为我们在我们的电子邮件中使用自定义动态 A/B 测试(如果我们决定 A /B 测试一封电子邮件,因为现在我们可以在我们的 web 服务端轻松地更改它)。您是否知道使请求“非阻塞”的任何方法,这意味着它只会发送请求而不等待任何响应?有点像 AJAX / 异步请求......我想道歉,因为我在这个领域不是很有经验。
-
在应用程序外部控制电子邮件内容(并保持应用程序电子邮件之间的一致性)的一种方法是使用the SendGrid Template Engine 来控制电子邮件内容,然后让您的应用程序告诉我们(SendGrid)您想要发送您的欢迎电子邮件(例如)