【问题标题】:Waiting for result of graph api / batch api等待图形 api / 批处理 api 的结果
【发布时间】:2012-01-05 22:00:07
【问题描述】:

如何不等待 API 调用的响应?

我有大量 API 调用(一个依赖于另一个),但应用程序不需要结果。只需说“Facebook 这样做”,不要等待回复。

我怎么能不等待回复?

【问题讨论】:

  • 如果您不必在后端进行调用,则可以使用客户端请求,例如通过 AJAX 或 JS SDK。
  • 是的,它会工作,但我正在寻找服务器端最简单的方法。所以发送并且不在乎它在做什么。使用 AJAX 服务器会处理更多请求,但仍等待答复。

标签: php facebook facebook-graph-api facebook-batch-request


【解决方案1】:

不久前我参与了一个项目,我们为类似的事情实施了排队。 (该应用程序发布到大约 150 页的墙上以及一些其他数据收集。

我们的解决方案是这样的:

我们有一个 Queue 表,其中填充了 Jobs。它们由参数令牌和特定的 Facebook API 调用组成。该表还有一个 status 列(设置为预定/成功/失败)、一个 response 列和几个日期时间列 scheduled &已发送

一个查找计划作业,然后运行 ​​API 调用并收集响应的脚本由 cron 作业以任意间隔运行。

应用程序本身可以查看 Queue 表并生成关于已运行的作业及其响应以及即将进行的计划作业的报告。

【讨论】:

  • 我认为这是一个绝妙的解决方案!我对此只有一个疑问。当它被添加到队列和用户离开应用程序时,我将无权在他的 ACC 上进行 POST 调用。我必须要求离线访问,对吗?
  • @Henry 这取决于您打算何时进行 API 调用。 Facebook 发布的“标准”令牌有一个与之相关的超时(我相信以秒为单位)。如果您打算在此超时后进行 API 调用,那么是的,您需要请求离线访问。
【解决方案2】:

我相信您正在寻找一种方法来进行异步 php 调用。您最终可能会自己进行一些查询,因为我认为 PHP FB SDK 不支持此类查询。

我相信 curl_multi(仅限 php5)是您正在寻找的解决方案:

您可能还会发现此质量检查很有帮助:

【讨论】:

  • 实际上我并没有在寻找异步调用,我只是想设置“等待响应”= false 并且在其他时间不处理传入响应事件的响应。但你是对的,它会起作用的!但是在没有 SDK 的情况下编写它会很困难。我有批量请求,包括文件上传,但我会看看这个解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多