我们在Facebook上有一个应用程序。即使用户离线,它也会代表用户每小时发布一次报价。但是当php脚本运行发布给用户的时间线时,我实际上面临着两个严重的问题。
首先,当您从新用户阅读新闻源时,最紧急的是“通过应用名称”未显示在用户名下黑莓手机,三星手机等触控手机苹果手机。这一点非常关键,因为应用程序用户不喜欢直接在没有“通过应用程序名称”的情况下发布内容。
其次,脚本需要花费近40秒的时间来执行,但是我有到目前为止只有15位用户请帮忙。这是我的PHP代码:
<?PHP
require_once '../inc/config.php';
$dbh = new PDO('mysql:dbname=' . $db_name . ';host=' . $db_host . ';charset=utf8', $db_username, $db_password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sqlid = "SELECT fb_id FROM offline_access_users";
$sqlmsg = "SELECT msg_id,message FROM fb_messages WHERE msg_id = (SELECT MAX(msg_id) FROM fb_messages WHERE sent = 'No' ORDER BY msg_id)";
try {
$stmt = $dbh->prepare($sqlid);
$stmt->execute();
$msg = $dbh->prepare($sqlmsg);
$msg->execute();
$msg_to = $msg->fetch();
$msg_tosend = $msg_to['message'];
$msg_tosendid = $msg_to['msg_id'];
}
catch (PDOException $e) {
echo $e->getMessage();
die();
}
while ($value = $stmt->fetch()) {
$id = $value['fb_id'];
$url = "https://graph.facebook.com/" . $id . "/feed";
$ch = curl_init();
$attachment = array(
'access_token' => $access_token,
'message' => $msg_tosend,
'app_id' => $fb_app_id,
'from' => $fb_app_id,
'display' => "touch",
'to' => "",
'redirect_uri' => "http://mydomain.com",
'link' => "",
'picture' => "",
'source' => "",
'caption' => "",
'description' => "",
'actions' => ""
);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
$result = curl_exec($ch);
}
curl_close($ch);
$sqlupdate = "UPDATE fb_messages SET sent = 'Yes' WHERE msg_id=" . $msg_tosendid;
try {
$stmt = $dbh->prepare($sqlupdate);
$stmt->execute();
}
catch (PDOException $e) {
echo $e->getMessage();
die();
}
$db = null;
?>
答案 0 :(得分:0)
1-第一个问题“通过应用程序名称”大多不受官方Facebook App for Phones,Tablets的支持。但你仍然可以从网络浏览器的News Feed
看到它,这是一个Facebook政策,而不是你的问题。喜欢推特的官方网站。
2-这是您的代码和数据库查询的优化问题! ,既然你使用PHP,为什么你不使用Facebook PHP SDK
?
PST
:我知道你在做什么,当你拥有大量订阅者时,你将面临很多问题,你必须优化你的发布算法,并且< strong> DO NOT 曾尝试同时向所有用户发送相同的帖子,您的应用程序将被禁止。
之前我制作了这个剧本,所有这些问题都面临着我,希望你绕过它们。