构建一个Facebook应用程序,由于Facebook规则,我必须等待10秒才能执行用户操作的发布。
这也可以用JavaScript完成,但发现php-sdk更精确。
我的问题是,延迟代码10s 执行的最佳和最准确的方法是什么
$response = $facebook->api(
'me/video.watches',
'POST',
array(
'tv_show' => "$permalink"
)
);
使用睡眠(10);将阻止加载整个页面。这里的正确解决方案是什么?
这可以通过创建一个数据库表并向数据库提供要作为post发送的记录来完成。在你的服务器上创建一个cron,读取未处理的记录,并创建一个facebook帖子给想要的用户。
您想要的是某种形式的异步处理。你可以采取多种不同的方法。
-
将"jobs"写入文件、数据库中的表等,并由cronjob处理它们。
-
分叉你的PHP进程,在"父"进程中向用户提供响应,并在"子"进程中发布到Facebook。
-
启动一个新进程并将其分离。(
exec('php postToFacebook.php > /dev/null 2>/dev/null &');
) -
使用Gearman等作业服务器系统。
我认为Gearman是最酷的,"新流程和分离"技巧可能是最简单的。
使用睡眠(10);将阻止加载整个页面。这里的正确解决方案是什么?
在黑暗中拍摄,尝试先渲染页面,然后调用sleep()?在没有上下文的情况下,很难就如何处理响应以及用户需要看到什么样的内容提供"简单"的解决方案。
您可以通过客户端的AJAX调用触发Facebook操作。一旦页面加载,您可以使用一个简单的setTimeout()
来延迟调用:
setTimeout( function(){
// Execute your AJAX call
}, 10000 ); // 1000 miliseconds = 1 second
通过AJAX调用的页面可以像往常一样简单地执行对Facebook的请求。