Facebook graph extremely slow in PHP -


क्या फेसबुक PHP एसडीके का उपयोग करना है, या केवल $ contents = file_get_contents ("https: / /graph.facebook.com/$id?access_token=$accessToken ") , आने के लिए प्रतिक्रिया के लिए एक दूसरे के आसपास ले जाता है।

यह बहुत धीमा है जब मुझे जांचने की आवश्यकता है आईडी की एक गुच्छा के लिए डेटा।

जब एक ब्राउज़र में, यदि मैं एक फेसबुक ग्राफ़ यूआरएल में टाइप करता हूं, तो मुझे परिणाम लगभग तुरंत मिलते हैं, जो इसे PHP में लेते समय का दसवां अंश देता है। >

इस समस्या का क्या कारण है, और मैं इसे जितनी तेज़ी से कैसे कर सकता हूं क्योंकि यह किसी भी ब्राउज़र में होगा? मुझे पता है कि ब्राउज़र ऐसा कर सकता है।

IDEA: शायद मुझे कुछ कर्ल में कॉन्फ़िगर करने की आवश्यकता है?

मैंने जो कोशिश की है:

  • PHP एसडीके का उपयोग करना यह धीमी गति से है पहली जगह में file_get_contents () का उपयोग करने की कोशिश करने का कारण यह था क्योंकि मैं उम्मीद कर रहा था कि PHP एसडीके ठीक से कॉन्फ़िगर नहीं किया गया था।
  • setopt ($ ch, CURLOPT_SSL_VERIFYPEER , झूठे); यह एक अंतर नहीं किया उत्तर के जवाब के बाद संपादित करें: वास्तव में, यह एक साथ कर्ल संभाल के पुन: उपयोग के साथ बाद में अनुरोधों को वास्तव में तेजी से बनाया।

    संपादित करें: यहां कोड का एक पेस्टबिन है जिसका उपयोग मैं उस समय को मापने के लिए करता था अनुरोध करते हैं: मैंने उस पाठ को सही किया जो माइक्रोसेकंड कहने के लिए इस्तेमाल होता था, सेकंड तक। यह वही है जो मैंने इस प्रश्न में अपनी टिप्पणी में लिखा है, जैसा परिणाम उत्पन्न करता है:। नोट भी है कि वे इसी तरह धीमी गति से समय लेते हैं, भले ही पहुंच टोकन की समय सीमा समाप्त हो गई हो, जैसे मेरी पेस्टबिन उदाहरण।

    संपादित करें 2: एसएसएल के साथ आंशिक रूप से समस्या होनी चाहिए। मैंने बेंचमार्किंग की कोशिश की (कोई httpS नहीं), और इसके परिणामस्वरूप तीन अनुरोधों के लिए 1.2 सेकेंड का परिणाम हुआ, जबकि उसी के साथ, लेकिन https के साथ 2.2 सेकंड लगे। यह किसी भी तरह से समाधान नहीं है, क्योंकि किसी भी अनुरोध के लिए जिसकी पहुंच टोकन की आवश्यकता है, मुझे https का उपयोग करना होगा।

    मुझे आश्चर्य हुआ कि क्या होगा यदि मैंने इसके बाद के दो curl_exec () कॉलों को बिना curl_close () किए बिना किया, HTTP रख-जिंदा उपयोग के लिए सक्षम किया गया।

    परीक्षण कोड:

      $ ch = curl_init ('https://graph.facebook.com/xxx'); Curl_setopt ($ CH, CURLOPT_RETURNTRANSFER, 1); // पहला अनुरोध curl_exec ($ ch); print_r (curl_getinfo ($ ch)); // दूसरा अनुरोध curl_exec ($ ch); print_r (curl_getinfo ($ ch)); curl_close ($ ch);   

    नीचे दिए गए परिणाम हैं, से उत्पादन के कुछ हिस्सों को दिखाते हैं:

      // पहला अनुरोध [कुल_टाइम] = & gt; 0.976259 [namelookup_time] = & gt; 0.008271 [कनेक्ट_टाइम] = & gt; 0.208543 [प्रीट्रांस्फर_टाइम] = & gt; 0.715296 // दूसरा अनुरोध [कुल_टाइम] = & gt; 0.253083 [namelookup_time] = & gt; 3.7 ई -5 [connect_time] = & gt; 3.7 ई -5 [प्रीtransfer_time] = & gt; 3. 9 ई -5   

    पहला अनुरोध बहुत धीमा है, लगभग एक पूर्ण दूसरा, आपके अनुभव के समान है। लेकिन दूसरे अनुरोध (केवल 0.25 एस) के समय से आप देख सकते हैं कि रख-जिंदा बना कितना फर्क पड़ता है।

    आपका ब्राउज़र इस तकनीक का प्रयोग भी करता है, इस पृष्ठ को ताज़ा उदाहरण में लोड कर रहा है आपका ब्राउज़र काफी लंबा समय लगेगा।

Comments