Попытка получить свойство необъекта - PullRequest
0 голосов
/ 23 июня 2011
<?php
include 'includes/config.php';

function do_curl($start_index, $stop_index) {

    // Do query here to get all pages with ids between start index and stop index

    $query = "SELECT * FROM fanpages WHERE idnum >= $start_index and idnum <= $stop_index";
    $result = mysql_query($query) or die(mysql_error());
    while ($row = mysql_fetch_array($result))
    {
        $fanpages_query[] = 'http://graph.facebook.com/'.$row['page_id'];
    }
    return $fanpages_query;   
}

$fanpages = do_curl($_GET['start_index'], $_GET['stop_index']);
$fanpages_count = count($fanpages);

$curl_arr = array();
$master = curl_multi_init();

for($i = 0; $i < $fanpages_count; $i++)
{
    $url = $fanpages[$i];
    $curl_arr[$i] = curl_init($url);
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($master, $curl_arr[$i]);
}
do {
    curl_multi_exec($master,$running);
} while($running > 0);

echo "results: <br>";
for($i = 0; $i < $fanpages_count; $i++)
{
    $results = json_decode(curl_multi_getcontent($curl_arr[$i]));
    echo("Page Name: ".($results->name)."<br>"."Likes: ".($results->likes)."<br>"."ID: ".($results->id)."<br><br>");
}
echo 'done';


?>

И, как вы можете видеть, почти все работает, единственная проблема с массивом, я задал вопрос, связанный с этим, как два часа назад, но ответ, который я получил, не работает для меня.Поэтому проблема в том, что комбинация do_curl и while в нем со списком $fanpages массивов не работает.каждый раз, когда я пытаюсь запустить скрипт, я получаю правильное количество страниц, правильное количество данных, но это выдает мне эту ошибку:

Notice: Trying to get property of non-object in C:\xampp\htdocs\curltest.php on line 46

Notice: Trying to get property of non-object in C:\xampp\htdocs\curltest.php on line 46

Notice: Trying to get property of non-object in C:\xampp\htdocs\curltest.php on line 46

Моя ставка заключается в том, что массивы не анализируются так, как онинужно быть |$ fanpages = array ('http://graph.facebook.com/1111111',' http://graph.facebook.com/222222222', 'http://graph.facebook.com/333333333'); | потому что, если я напишу их вручную, все будет работать.

EDIT: Произошла ошибка сценария:

 $fanpages_query[] = '\'http://graph.facebook.com/'.$row['page_id']."'";

и я только что удалил \ 'и теперь его бросок:

Notice: Undefined property: stdClass::$name in C:\xampp\htdocs\curltest.php on line 48

После добавления var_dump:

object(stdClass)#1 (1) { ["error"]=> object(stdClass)#2 (2) { ["type"]=> string(20) "GraphMethodException" ["message"]=> string(24) "Unsupported get request." } } string(78) "{"error":{"type":"GraphMethodException","message":"Unsupported get request."}}" NULL
Notice: Undefined property: stdClass::$name in C:\xampp\htdocs\curltest.php on line 48

1 Ответ

2 голосов
/ 23 июня 2011
$results = json_decode(curl_multi_getcontent($curl_arr[$i]));

Ошибка декодирования JSON. Измените его на это и опубликуйте результаты, чтобы мы могли получить больше информации:

$results = json_decode($raw_results = curl_multi_getcontent($curl_arr[$i]));
var_dump($results, $raw_results, !$results?json_last_error():null);

РЕДАКТИРОВАТЬ 1

Согласно комментариям вы не получаете никаких данных обратно. Есть ли причина, по которой вы не используете код, подобный тому, который указан на curl_multi_exec() странице справочника ?

$active = null;
//execute the handles
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...