Using PHP to read a web page with fsockopen(), but fgets is not working -


I यहां इस कोड का उपयोग कर रहा है:

  सार्वजनिक फ़ंक्शन readHttpFile ($ strUrl, $ iHttpRedirectMaxRecursiveCalls = 5) {// वेब सर्वर का नाम / आईपी, पथ और पोर्ट प्राप्त यूआरएल को पार्स करना। $ Url = parse_url ($ strUrl); // यदि पथ $ strUrl में मौजूद नहीं है तो '/' के लिए पथ सेट करना यदि (isset ($ url ['path']) === गलत) $ url ['path'] = '/'; // सेटिंग पोर्ट को डिफ़ॉल्ट HTTP सर्वर पोर्ट 80 अगर (isset ($ url ['port']) === गलत) $ url ['port'] = 80; // सर्वर से कनेक्ट हो रहा है) // रीसेट क्लास डेटा $ this- & gt; सफलता = गलत; सेट नहीं ($ इस- & gt; strFile); सेट नहीं ($ इस- & gt; aHeaderLines); $ This- & gt; strLocation = $ strUrl; $ Fp = fsockopen ($ url ['होस्ट'], $ url ['port'], $ errno, $ errstr, 30); // लौटें अगर सॉकेट $ $ नहीं खोला-- सफलता सफलता के लिए झूठी है अगर (! $ एफपी) वापसी; $ हैडर = 'प्राप्त / HTTP / 1.1 \ r \ n'; $ हैडर। = 'होस्ट:'। $ Url ['host']। $ Url ['पथ']; If (isset ($ url ['query']) $ header। = '?'। $ Url ['query']; $ हैडर। = '\ R \ n'; $ हैडर। = 'कनेक्शन: बंद करें \ r \ n \ r \ n'; // सर्वर को अनुरोध भेजना "हेडर है: & lt; br />".str_replace(''n ',' \ n & lt; br / & gt; ', $ हैडर)।" & Lt; br / & gt; " ; $ लंबाई = स्ट्रेलन ($ हेडर); अगर ($ लम्बाई! = फ़िलिट ($ एफपी, $ हेडर, $ लम्बाई)) {इको 'त्रुटि लेख लिखने के लिए, निकल रही है & lt; br / & gt;'; वापसी; } // $ bHeader सही पर सेट है, जबकि हमें HTTP हेडर प्राप्त होता है // और खाली पंक्ति (HTTP शीर्षलेख के अंत) के बाद यह गलत पर सेट है $ BHeader = सच; // जारी नहीं है जब तक गर्तिका से पढ़ने के लिए और पाठ नहीं है (फीफ ($ fp)) {echo "in loop"; // सॉकेट से पाठ की एक पंक्ति // 8192 प्रतीकों से अधिक नहीं पढ़ना $ अच्छा = $ strLine = fgets ($ एफपी, 128); अगर (! $ अच्छा) {गूंज 'बुरा'; वापसी; } // अनुरेखण \ n और \ r वर्णों को हटाने $ StrLine = ereg_replace ('[\ r \ n]', '', $ strline); अगर ($ bHeader == गलत) $ this- & gt; strFile = $ strline। '\ N'; Else $ this- & gt; aHeaderLines [] = ट्रिम ($ strline); अगर (strlen ($ strLine) == 0) $ bHeader = false; गूंज "पढ़ा: $ strline & lt; br / & gt;"; वापसी; } गूंज के बाद "& lt; br / & gt; लूप के बाद & lt; br / & gt;"; Fclose ($ fp); }  

यह सब मुझे मिल रहा है:

  हैडर है: GET / HTTP / 1.1 \ r \ n होस्ट: www.google.com/\r \ N कनेक्शन: बंद करें \ r \ n \ r \ n loopbad में  

तो यह fgets ($ fp, 128) विफल रहता है;

< Div class = "post-text" itemprop = "text">

क्या कोई कारण है कि आप पीपीपी के अंतर्निहित, सक्षम-दर-डिफॉल्ट क्षमता का इस्तेमाल नहीं कर रहे हैं जिससे एफओपीएन का उपयोग कर रिमोट फाइल प्राप्त हो?

  $ remot_page = file_get_contents ('http://www.google.com/'); // & lt; - वर्क्स!  

उच्च-गुणवत्ता वाले तीसरे पक्ष के पुस्तकालयों में भी बहुत कुछ है, अगर आपको बहुत मुश्किल से बिना फ़ेच हेडर की तरह कुछ करना है आकार के लिए प्रयास करें।


Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -