【发布时间】:2014-04-07 09:37:52
【问题描述】:
我有以下问题:
我创建了一个社交网络,每个用户都可以在其中在 facebook 上分享他的个人资料。用户在我的社交网络上有一个排名,该排名必须出现在 Facebook 上共享的链接的标题中。这种排名会根据用户活动而变化:如果用户发布任何内容,他的排名就会增长。
第一个问题来了:Facebook 缓存了打开的图数据,所以如果我第一次分享我的页面并且我的排名是 100,我在 facebook 上分享的标题中会有 100。然后,如果我的排名上升到 200,因为我发布了一些东西并且我再次分享了我的页面,我仍然会在 facebook 上看到 100,因为数据被缓存了。
然后我做了以下功能:
function refresh(){
$access_token="APPID|APPSECRET"; //replace with your app details
$params = array("id"=>'MY URL', "scrape"=>"true","access_token"=>$access_token);
$ch = curl_init("https://graph.facebook.com");
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_SSL_VERIFYHOST=>false,
CURLOPT_SSL_VERIFYPEER=>false,
CURLOPT_POST=>true,
CURLOPT_POSTFIELDS=>$params
));
$result = curl_exec($ch);
}
成功刷新缓存。
因此,当用户添加新帖子时,会调用一个脚本,该脚本的作用如下:
1) add post to db;
2) refresh();
3) header('location: profile_page');
问题如下: refresh() 需要很长时间..所以添加新帖子的脚本从 0.2 秒(不刷新)变为 4 秒(刷新),这对用户来说很烦人,因为他们必须等待很长时间发布后的时间,他们认为我的网站很慢。有没有办法在 PHP 中以不让用户等待的方式执行 refresh()? 比如:
1) add post to db;
2) run refresh(), but finish the script even if refresh has not finished yet.
3) header('location: profile_page');
【问题讨论】:
标签: php facebook facebook-graph-api