Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;“通过我的申请”;isn';当我的应用程序发布到facebook时,大多数手机上都不会显示_Php_Facebook_Facebook Graph Api_Curl_Libcurl - Fatal编程技术网

Php &引用;“通过我的申请”;isn';当我的应用程序发布到facebook时,大多数手机上都不会显示

Php &引用;“通过我的申请”;isn';当我的应用程序发布到facebook时,大多数手机上都不会显示,php,facebook,facebook-graph-api,curl,libcurl,Php,Facebook,Facebook Graph Api,Curl,Libcurl,我们在Facebook上有一个应用程序。它代表用户每小时发布一次报价,即使用户离线时也是如此。但是,当php脚本运行以向用户发布时间线时,我实际上面临着两个严重问题。首先,最紧迫的问题是,当您阅读来自黑莓、三星和iphone等新型触控手机的新闻提要时,用户名下没有显示“via app name”。这一点非常关键,因为应用程序用户不喜欢在没有“通过应用程序名称”的情况下直接代表他们发布内容。其次,执行脚本需要将近40秒,但到目前为止,我只有15个用户。请帮忙。以下是我的PHP代码: <?PH

我们在Facebook上有一个应用程序。它代表用户每小时发布一次报价,即使用户离线时也是如此。但是,当php脚本运行以向用户发布时间线时,我实际上面临着两个严重问题。

首先,最紧迫的问题是,当您阅读来自黑莓、三星和iphone等新型触控手机的新闻提要时,用户名下没有显示“via app name”。这一点非常关键,因为应用程序用户不喜欢在没有“通过应用程序名称”的情况下直接代表他们发布内容。

其次,执行脚本需要将近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;

?>
1-第一个问题“通过应用程序名”在官方的Facebook手机、平板电脑应用程序中大多不受支持。但是你仍然可以从网络浏览器的
新闻订阅中看到它,这是Facebook的政策,不是你的问题。比如Twitter的官方网站

2-这是代码和数据库查询的优化问题,既然您使用的是PHP,为什么不使用
Facebook PHP SDK

PST
:我知道你真正在做什么,当你有大量订阅者时,你将面临很多问题,你必须优化你的发布算法,不要试图同时向所有用户发送相同的帖子,你的应用程序将被禁止


我以前写过这个脚本,所有这些问题都摆在我面前,希望你能绕过它们。

非常感谢你的回复。我仍然是编程新手,因此我正在努力获得我在互联网上找到的最佳解决方案。但在这一点上,我没有任何线索,我坚持。如果你能帮我解决这个问题,我将不胜感激。