-1

构建一个 Facebook 应用程序,由于 Facebook 规则,我必须等待 10 秒才能执行用户操作的发布。

这也可以使用 JavaScript 完成,但发现 php sdk 更精确。

我的问题是,延迟执行代码 10s 的最佳和最准确的方法是什么

$response = $facebook->api(
'me/video.watches',
'POST',
array(
'tv_show' => "$permalink"
)
);

使用睡眠(10);将阻止整个页面加载。这里的正确解决方案是什么?

4

4 回答 4

1

你想要的是某种形式的异步处理。您可以采取多种不同的方法。

  • 将“作业”写入文件、数据库中的表等,并让 cronjob 处理它们。

  • 分叉您的 PHP 进程,在“父”进程中向用户提供响应,并在“子”进程中发布到 Facebook。

  • 启动一个新进程并将其分离。( exec('php postToFacebook.php > /dev/null 2>/dev/null &');)

  • 使用诸如Gearman之类的作业服务器系统。

    我认为 Gearman 是最酷的,“新进程和分离”技巧可能是最简单的。

于 2013-08-21T08:55:10.193 回答
1

这可以通过创建一个数据库表并为您的数据库提供要作为邮寄发送的记录来完成。在您的服务器上创建一个读取未处理记录的 cron,并为所需用户创建一个 facebook 帖子。

于 2013-08-21T08:48:28.877 回答
0

使用睡眠(10);将阻止整个页面加载。这里的正确解决方案是什么?

在黑暗中拍摄,尝试先渲染页面然后调用 sleep()?很难在没有上下文的情况下就您如何处理响应以及用户需要看到呈现的内容提供“简单”解决方案的建议。

于 2013-08-21T08:53:47.763 回答
0

您可以通过客户端的 AJAX 调用触发 Facebook 操作。页面加载后,您可以使用简单setTimeout()的延迟调用:

setTimeout( function(){
  // Execute your AJAX call
}, 10000 ); // 1000 miliseconds = 1 second

通过 AJAX 调用的页面可以像往常一样简单地执行对 Facebook 的请求。

于 2013-08-21T08:59:44.920 回答