1

我已经成功创建了一个自定义 Facebook 打开图形操作,并且能够从我的 facebook 应用程序中发布它。但是,Facebook 要发布的 API 降低了我的用户体验,所以我创建了一个队列表,我想在用户体验之外从 cron 执行。

该表包含一个包含完整发布请求的字段,如下所示:

https://graph.facebook.com/me/mynamespace:my_action?custom_item=https://www.mysite .com/thefolder/&access_token=XXXXXXX

所以我的 cron 工作人员将每 2 分钟运行一次。我如何让 PHP 在上面异步运行 CURL(或其他东西),即不等待 facebook 响应,所以我可以在一分钟内说 100 个(我应该真幸运)?

哦,b)我应该"/me/"用人的 fb 用户 ID 替换吗?

注意,我不是 linux 人。谢谢!

4

2 回答 2

1

但是,要发布的 Facebook API 正在降低我的用户体验

首先,它是如何减慢速度的?您是在对 API 进行服务器端还是客户端调用?

如果你在客户端做,它已经是异步的,所以不应该有太多的减速会影响用户体验。

我如何让 PHP 在上面异步运行 CURL(或其他东西),即不等待 facebook 响应,所以我可以在一分钟内说 100 个(我应该这么幸运吗)?

我还没有“异步”使用 cURL,但是一个快速的谷歌搜索建议你可以尝试将 CURLOPT_TIMEOUT 或在最新系统上甚至 CURLOPT_TIMEOUT_MS 设置为 1。但我不能告诉你这有多可靠会的;如果客户端(在这种情况下是您的服务器)快速关闭连接等,Facebook 的 API 是否会正确处理它。

我不确定通过 cron 执行此操作是否是个好主意。

如果您不能按照上面的建议在客户端执行 API 调用,因为您需要发送应用访问令牌才能发布您的操作,那么我建议您仍然在服务器端执行此操作,但不要通过 cron ,但由用户自己触发,通过将 IMG 或 SCRIPT 元素嵌入到您的页面中(如果您将用户引导到新页面,则由 PHP 输出,或者通过 JavaScript 创建并放入 DOM 客户端) ,它的源设置为发布操作的 PHP 脚本的地址。如果您使用 SCRIPT 元素,您甚至可以通过在响应中返回适当的 JavaScript 代码来控制操作的结果并在客户端对其做出反应。

我认为这种方法不应该显着降低用户体验,而且我还猜想它可能比由 cron 调用脚本触发的数百个“异步”cURL 请求更可靠。

哦,b)我应该用个人fb用户ID替换“/me/”吗?

通过调用中提供的用户访问令牌,API 可以自己解决这个问题。

但是,如果您使用的是应用程序访问令牌,则必须使用用户 ID,否则 API 无法知道调用中指的是哪个用户。

于 2012-06-23T11:26:52.557 回答
0

您应该将用户会话存储在某处(数据库等)。然后,只要用户会话处于活动状态,您就可以通过 cron worker 发送。并在发布操作时使用令牌。(您应该只使用属于用户的令牌:))

b) 我应该用个人 fb 用户 ID 替换“/me/”吗?

那么你可以使用 /me 或 /id

要进行 aynbchronus http 调用,请参阅这篇文章 异步 PHP 调用?

但是有速率限制,这将阻止您基于此条件发布(每 600 秒 600 次调用,每个令牌和每个 IP 是关于他们阻止您的位置)
来源:http ://www.quora.com/Whats- the-Facebook-Open-Graph-API-rate-limit

于 2012-06-23T11:26:05.913 回答