2009-04-09 9 views
6

मेरा वेब पेज पांच चार्ट बनाने के लिए Google चार्ट का उपयोग करता है। यदि ग्राफ पहले ही कैश नहीं किए गए हैं, तो मेरे पास कोड की निम्न पंक्ति है जो छवि को पुनर्प्राप्त करती है।

$ छवि = file_get_contents ("http://chart.apis.google.com/chart?" $ क्वेरी।);

जब उस कोड को लूप में निष्पादित किया जाता है, तो प्रत्येक छवि को प्राप्त करने में 10 सेकंड लगते हैं। लेकिन, अगर मैं यूआरएल के बजाय Google के आईपी पते में से किसी एक का उपयोग करने के लिए कोड बदलता हूं:

$ image = file_get_contents ("http://74.125.93.100/chart?"। $ क्वेरी);

छवियों को पुनर्प्राप्त करने में एक सेकंड से भी कम समय लगता है। तो मेरा प्रारंभिक विचार यह था कि DNS यूआरएल को हल नहीं कर रहा है और देरी असाइन किए गए DNS सर्वर के माध्यम से साइकिल चलाना है? तो मैंने सर्वर से chart.apis.google.com पिंग करने की कोशिश की और तुरंत एक उचित प्रतिक्रिया लौटा दी।

तो मेरे सवाल है: क्या कोई पीएचपी (या Apache2) कॉन्फ़िगरेशन सेटिंग की मुझे लगता है कि यह देरी हो सकती है अनदेखी की जा सकती है, या सर्वर कॉन्फ़िगरेशन की समस्या की तरह इस ध्वनि करता है?

+0

यदि आप curl जैसे छवि को पुनर्प्राप्त करने के लिए किसी अन्य विधि का उपयोग करते हैं तो क्या होगा? – Matt

+0

PHP का कौन सा संस्करण? किसी भी मौके पर आप यह देखने के लिए नवीनतम में अपग्रेड कर सकते हैं कि इससे समस्या ठीक हो जाती है या नहीं? –

+0

मैं यह देखने के लिए कुछ परीक्षण करता हूं कि DNS वास्तव में समस्या है या नहीं। आप अपने एपीआई कॉल को एक समय ब्लॉक में लपेट सकते हैं। –

उत्तर

1

छवियों को लोड करने से पहले आईपी को हल क्यों नहीं करें?

$ip = gethostbyname($name); 
$image = file_get_contents($ip."/chart?".$query); 
+0

हाँ, यह काम करेगा लेकिन अभी भी ~ 10 सेकंड खर्च करेगा अस्वीकार्य है। मुझे इसकी कॉन्फ़िगरेशन समस्या आश्वस्त है, बस यह सुनिश्चित न करें कि यह PHP, अपाचे या सर्वर कॉन्फ़िगरेशन समस्या की तरह लगता है। – Kevin

+0

यह केवल तभी काम करेगा जब उस सर्वर पर केवल एक साइट होस्ट की जाती है। मल्टीसाइट पर्यावरण सर्वर में यह नहीं पता होगा कि आप किस साइट पर – Alekc

7

आपके DNS को हल करने धीमी है (DNS अपने सर्वर उपयोग कर रहा है एक broblem हो सकता है, तो अन्य डोमेन के सबसे धीमी गति से हो सकता है) या अपने सर्वर DNS कैश का उपयोग कर समस्या है।

किसी भी मामले में, यदि आप छवि गूगल चार्ट से प्राप्त हेरफेर करने के लिए कुछ विशेष कारणों की जरूरत नहीं है, यही कारण है कि तुम सिर्फ इसे बाहर एक img टैग के रूप में मुद्रित नहीं है? यदि आप चाहते हैं तो आप सीएसएस के साथ ग्रंथों या पारदर्शी पीएनजी-एस ओवरले कर सकते हैं।

4

यहां एक ही समस्या है। यह एक DNS समस्या हो सकती है ... शायद अपाचे सर्वर जो DNS सर्वर का उपयोग करता है जो बहुत धीमी है।

मैं विभिन्न तरीकों की कोशिश की है: कर्ल, wget (खोल कार्यकारी) ... और अब भी वही प्रदर्शन मुद्दा मिल गया।

मेरे उत्पादन सर्वर पर लगभग 15 सेकंड लगते हैं। लेकिन मेरे स्थानीय सर्वर (जो आईपी का उपयोग करता है) पर मेरी स्क्रिप्ट के साथ 1.5 सेकंड से कम समय लगता है।

कोशिश करें /etc/resolv.conf या /etc/named.conf? शायद। मैं एक समाधान खोजने की कोशिश कर रहा हूँ।

+4

पर कॉल कर रहे हैं, मुझे लगता है कि आपके जैसा ही सटीक समस्या थी। मेरा समाधान Google के नेमसर्वर (यानी 'नेमसर्वर 8.8.8.8') का उपयोग करने के लिए मेरे /etc/resolv.conf को संपादित करने के लिए बाहर निकला। –

+0

@ स्टीवन ऑक्सले आपको बहुत धन्यवाद !!!! मैंने इस समस्या का समाधान खोजने के लिए 2 घंटे बिताए, और केवल आपकी सलाह उपयोगी थी। –

2

यह आईपी अपने होस्टिंग प्रदाता /etc/resolv.conf में डाल से संबंधित एक समस्या है। आप इसे सुधार नहीं सकते। यह आपके होस्टिंग प्रदाता की एक समस्या है। 8.8.8.8:

लेकिन आप Google सार्वजनिक DNS का उपयोग कर सकते हैं। ओपन /etc/resolv.conf, तो सभी डेटा हटा और लिखें:

nameserver 8.8.8.8 

तब इसे सहेजें। डीएनएस और अपाचे को पुनरारंभ करें। फिर पुन: प्रयास करें।

संबंधित मुद्दे