CURL и JSON проблема - PullRequest
       4

CURL и JSON проблема

1 голос
/ 23 июня 2011

Я пытаюсь настроить скрипт, который будет очищать мои страницы в Facebook и возвращать мне всю информацию, чтобы я мог вставить ее в базу данных (имя, лайки и т. Д.).Я создал скрипт CURL, но по какой-то странной причине он не работает.Это выдает мне сообщение «Внимание: я пытаюсь получить свойство не-объекта в C: \ xampp \ XXX \ curltest.php в строке 26».

Да JSON и CURL включены на моем сервере.Я буду рад, если кто-то поможет.;)

    <?php
// create both cURL resources
$ch1 = curl_init();
$ch2 = curl_init();

// set URL and other appropriate options
curl_setopt($ch1, CURLOPT_URL, "http://graph.facebook.com/19292868552");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_URL, "http://graph.facebook.com/youtube");
curl_setopt($ch2, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);

//create the multiple cURL handle
$mh = curl_multi_init();

//add the two handles
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$running=null;
//execute the handles
do {
    usleep(10000);
    $Likes = json_decode(curl_multi_exec($mh,$running));
    return $Likes->data;

          //output the message body
          echo($Likes->likes);
          //add a line break to separate comments
          echo("<br />");   

} while ($running > 0);



//close the handles
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);


?>

Также мне хотелось бы узнать, как сделать какую-то функцию while.Если, скажем, я хотел бы очистить 10 URL-адресов, я не могу написать их по одному, поэтому лучше было бы сделать запрос SQL, чтобы получить эти URL-адреса оттуда.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 23 июня 2011

По сути, в вашей переменной $Likes ничего нет.Вы должны проверить, чтобы убедиться, что ваш exec и декодирование выполнены успешно.

Причина, по которой в этой переменной ничего нет, состоит в том, что json_decode() не удалось.Причина сбоя json_decode() заключается в том, что вывод функции curl_multi_exec() является дескриптором процесса cURL.Если вы прочитаете документацию , вы увидите это.

Вам необходимо использовать curl_multi_getcontent(), чтобы получить возвращенные данные.

0 голосов
/ 23 июня 2011

вы получили не объект из-за того, что curl_multi_exec получил не контент, или контент не может быть преобразован в объект из json.you лучше попробовать, если ($ likes) перед вызовом $ Likes-> data.

вы можете написать функцию для обработки одного вызова, но без использования curl_multi

0 голосов
/ 23 июня 2011

Если вы посмотрите на оба этих URL, то будет нет индекса с именем data: это 2 ответа json:

{
   "id": "19292868552",
   "name": "Facebook Platform",
   "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/211033_19292868552_7506301_s.jpg",
   "link": "http://www.facebook.com/platform",
   "likes": 2158804,
   "category": "Product/service",
   "website": "http://developers.facebook.com",
   "username": "platform",
   "founded": "May 2007",
   "company_overview": "Facebook Platform enables anyone to build social apps on Facebook and the web.",
   "mission": "To make the web more open and social."
}

{
   "id": "7270241753",
   "name": "YouTube",
   "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/41601_7270241753_5799_s.jpg",
   "link": "http://www.facebook.com/youtube",
   "likes": 40013301,
   "category": "Product/service",
   "website": "http://www.facebook.com/youtube",
   "username": "youtube",
   "founded": "2005",
   "company_overview": "YouTube is the the largest online video destination in the world and the third most visited Website overall. The site exceeds two billion views a day - nearly double the prime time audience of all three major U.S. networks combined. The platform comprises the largest video-sharing community in the world and includes users, advertisers and over 10,000 partners. Every minute 24 hours of video uploaded to the site. Hundreds of millions of users spanning the globe come to YouTube to discover and shape the world through video.",
   "mission": "To be the best place on earth to create, watch, discover and share videos.",
   "products": "More to explore at: http://www.youtube.com/testtube",
   "description": "YouTube - We  | Facebook"
}

Такжеуверен, что json_decode сработало (что также может быть проблемой)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...