SoWhat Posted February 13, 2012 Author Report Share Posted February 13, 2012 Izdevās dabūt tos, kas spieduši Like un tos, kas komentējuši, taču izskatās, ka no api nav paredzēts dabūt tos, kas spieduši Share.. Ir kādi ieteikumi kā tos dabūt? PS. Kādēļ piekļuve FB API ir tik bremzīga? Quote Link to comment Share on other sites More sharing options...
daGrevis Posted February 13, 2012 Report Share Posted February 13, 2012 FB kā tāds ir lēns... nez vai tas ir dēļ PHP un MySQL apakšā? Quote Link to comment Share on other sites More sharing options...
SoWhat Posted February 13, 2012 Author Report Share Posted February 13, 2012 pats facebook.com man iet ātri, taču lai no API ielādētu dažus desmitus ierakstu, jāgaida vismaz 40 sekundes Quote Link to comment Share on other sites More sharing options...
codez Posted February 13, 2012 Report Share Posted February 13, 2012 Nez, no šīs lapas piemēriem, arī tiem, kuri ar lielām atbildēm, visi ielādēja momentāli: http://developers.facebook.com/docs/reference/api/ Quote Link to comment Share on other sites More sharing options...
SoWhat Posted February 13, 2012 Author Report Share Posted February 13, 2012 tad visdrīzāk būšu nošāvis greizi rakstot kodu. Šis ir mans pirmais opjektorientētais PHP skripts: class fb { private $access_token = 'AAACLY4KIvQ0BAEAEnxtMq94zhLYwZBXtfha7LrznvHEK5QZDZD'; private $id = ''; private $type = 'feed'; private function __construct($get) { $this->id = $get; } private function getStuff($id, $type, $access_token) { $d = file_get_contents("https://graph.facebook.com/$id/$type?access_token=$access_token"); $d = json_decode($d, true); return $d; } public function echoStuff() { $temp = $this->getStuff($this->id, $this->type, $this->access_token); foreach ($temp['data'] as $row) { echo '<hr />' . $row['id'] . '<br />'; echo $row['message'] . '<br />'; $like = $this->getStuff($row['id'], 'likes', $this->access_token); foreach ($like['data'] as $row2) { echo ' -----Like------<br>'; echo ' <small>' . $row2['id'] . '</small><br />'; echo ' ' . $row2['name'] . '<br />'; } $comment = $this->getStuff($row['id'], 'comments', $this->access_token); foreach ($comment['data'] as $row2) { echo ' ---Comment---<br>'; echo ' <small>' . $row2['from']['id'] . '</small><br />'; echo ' ' . $row2['from']['name'] . '<br />'; echo ' ' . $row2['message'] . '<br />'; } } } } Quote Link to comment Share on other sites More sharing options...
Kaklz Posted February 13, 2012 Report Share Posted February 13, 2012 Vai tu esi saskaitījis cik reizes viena pieprasījuma laikā tu paprasi Facebook datus caur HTTP? Katrs tavs getStuff funkcijas izsaukums veido jaunu HTTP pieprasījumu. Tu ciklē cauri rezultātus un katrā ciklā taisi vēl divus HTTP pieprasījumus. Vienkārši izsakoties tur arī rodas tās tavas 40 sekundes, ka tu viena sava pieprasījuma laikā veic visticamāk vairākus desmitus pieprasījumu uz FB. P.S. HTTP pieprasījumi ir lēni un ļoti bieži viena no šaurākajām vietām visā sistēmā. Quote Link to comment Share on other sites More sharing options...
SoWhat Posted February 13, 2012 Author Report Share Posted February 13, 2012 Bet nu citas izejas nav, vai ne? PS. kā izskatās tas kods no OOP viedokļa? Quote Link to comment Share on other sites More sharing options...
daGrevis Posted February 13, 2012 Report Share Posted February 13, 2012 Kā nav citas izejas? Tu veido liekus pieprasījumus... Tev ir... Tu: Cik ir divi, plus, divi?Viņš: Četri. Tu: Cik ir divi, plus, divi? Viņš: Četri. Tu: Cik ir divi, plus, divi? Viņš: Četri. Tu: Cik ir divi, plus, divi? Viņš: Četri. Tu: Cik ir divi, plus, divi? Viņš: Četri. Tu: Cik ir divi, plus, divi? Viņš: Četri. Skaidrs. Tātad četri. Tev vajadzētu: Tu: Cik ir divi, plus, divi? Viņš: Četri. Skaidrs. Tātad četri. Quote Link to comment Share on other sites More sharing options...
Kaklz Posted February 13, 2012 Report Share Posted February 13, 2012 PS. kā izskatās tas kods no OOP viedokļa? No tāda puslīdz nopietna oop tur ir maz. Pirms domā par oop vispirms sāc rakstīt smuku kodu ar normāliem mainīgo nosaukumiem, funkciju, metožu nosaukumiem (ko tu darīsi, ja vajadzēs vēl kādu citu fb pieprasījumu tajā pašā klasē, sauksi metodi par getOTherStuff, vai getStuff2?), saliec smukas atkāpes. Tas, ka tu kodu saliec class definīcijā nenozīmē, ka tu raksti labu oop kodu. Paskaties kaut vai uz veidu, kā tu izmanto klases atribūtus - funkcijas getstuff metodē tu prasi access token kā obligātu parametru, bet tam vienmēr padod pašas klases privāto atribūtu. Nav jēgas no tādas parametru apkārt staipīšanas. Getstuff metodei ir jāizmanto klases atribūts. Pati doma par echostuff stila funkciju ir šķērsām. Klasēs, kurās notiek datu ieguve funkcijām/metodēm dati ir jāatgriež, nevis jāizvada. izvadam ir jābūt ārpus datu ieguves klasēm (palasi par mvc patternu) Quote Link to comment Share on other sites More sharing options...
SoWhat Posted February 14, 2012 Author Report Share Posted February 14, 2012 (edited) daGreivis, visu nakti prātoju, kā to varētu uzrakstīt ar mazāk pieprasījumiem, bet tā arī pie loģiska rezultāta neesmu nonācis. Vienīgais veids būtu, ja pats feisbooks ļautu tos visus datus iegūt vienā reizē. Vai tas, ko biji domājis ir "Batch Request" ? Kaklz, tnx par padomiem! Edited February 14, 2012 by SoWhat Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.