PHP कर्ल - कार्य और उपयोग के उदाहरण। PHP कर्ल कमांड लाइन विकल्पों में cURL का उन्नत उपयोग
(PHP 4 >= 4.0.2, PHP 5, PHP 7)
कर्ल_सेटॉप्ट - कर्ल सत्र के लिए एक पैरामीटर सेट करता है
मापदंडों की सूची
कर्ल हैंडल से प्राप्त किया गया कर्ल_इनिट().
पैरामीटर सेट किया जाना है CURLOPT_XXX.
विकल्प पैरामीटर का मान.
बूल:
पैरामीटर | टिप्पणियाँ | |
---|---|---|
CURLOPT_AUTOREFERER | सत्यस्वचालित फ़ील्ड सेटिंग के लिए सन्दर्भकर्ता:हेडर द्वारा पुनर्निर्देशित अनुरोधों में जगह:. | |
CURLOPT_BINARYTRANSFER | सत्यस्थिरांक का उपयोग करते समय कच्ची प्रतिक्रिया वापस करने के लिए CURLOPT_रिटर्नट्रांसफर. | PHP 5.1.3 के अनुसार इस विकल्प की अब आवश्यकता नहीं है: विकल्प का उपयोग करते समय कच्चा आउटपुट हमेशा लौटाया जाता है CURLOPT_रिटर्नट्रांसफर. |
CURLOPT_COOKIESESSION | सत्यवर्तमान सत्र को कुकीज़ का एक नया "सत्र" शुरू करने का निर्देश देना। इससे libcurl किसी भी "सत्र" कुकीज़ को अनदेखा कर देगा, जिसे उसे पिछले सत्र से लोड करना चाहिए था। डिफ़ॉल्ट रूप से, libcurl हमेशा सभी कुकीज़ को सहेजता और लोड करता है, भले ही वे "सत्र" हों या नहीं। "सत्र" कुकीज़ ऐसी कुकीज़ हैं जो समाप्त नहीं होती हैं और केवल वर्तमान "सत्र" के लिए मौजूद होनी चाहिए। | |
CURLOPT_CERTINFO | सत्यस्ट्रीम करने के लिए एसएसएल प्रमाणपत्र जानकारी आउटपुट करने के लिए STDERRसुरक्षित कनेक्शन के साथ. | कर्ल 7.19.1 में जोड़ा गया। PHP 5.3.2 से प्रारंभ होकर उपलब्ध है। सही संचालन के लिए इस विकल्प को सक्षम करना आवश्यक है CURLOPT_VERBOSE. |
CURLOPT_CONNECT_ONLY | सत्यलाइब्रेरी को आवश्यक प्रॉक्सी प्रमाणीकरण और कनेक्शन सेटअप करने के लिए कहता है, लेकिन डेटा संचारित नहीं करता है। यह विकल्प HTTP, SMTP और POP3 के लिए लागू किया गया है। | 7.15.2 में जोड़ा गया। PHP 5.5.0 से उपलब्ध है. |
CURLOPT_CRLF | सत्ययूनिक्स लाइन एंडिंग को सीआरएलएफ में बदलने के लिए। | |
CURLOPT_DNS_USE_GLOBAL_CACHE | सत्यवैश्विक DNS कैश का उपयोग करने के लिए। यह विकल्प थ्रेड सुरक्षित नहीं है और डिफ़ॉल्ट रूप से सक्षम है। | |
CURLOPT_FAILONERROR | सत्यविफलता पर एक विस्तृत रिपोर्ट के लिए यदि प्राप्त HTTP कोड 400 से अधिक या उसके बराबर है। डिफ़ॉल्ट व्यवहार कोड को अनदेखा करते हुए, पृष्ठ को सामान्य रूप में लौटाता है। | |
CURLOPT_FILETIME | सत्यकिसी दूरस्थ दस्तावेज़ की संशोधन तिथि प्राप्त करने का प्रयास करना। यह मान फ़ंक्शन से CURLINFO_FILETIME पैरामीटर का उपयोग करके प्राप्त किया जा सकता है कर्ल_गेटइन्फो(). | |
CURLOPT_FOLLOWLOCATION | सत्यकिसी भी शीर्षक का अनुसरण करने के लिए "जगह: "सर्वर द्वारा अपनी प्रतिक्रिया में भेजा गया (ध्यान दें कि यह पुनरावर्ती रूप से होता है, PHP भेजे गए किसी भी हेडर का अनुसरण करेगा "जगह: ", सिवाय इसके कि जब कोई स्थिरांक सेट किया गया हो CURLOPT_MAXREDIRS). | |
CURLOPT_FORBID_पुन: उपयोग | सत्यकिसी कनेक्शन की प्रोसेसिंग पूरी होने के बाद उसे बंद करने के लिए बाध्य करना ताकि इसका पुन: उपयोग न किया जा सके। | |
CURLOPT_FRESH_CONNECT | सत्यकैश्ड कनेक्शन के बजाय नए कनेक्शन के उपयोग को बाध्य करना। | |
CURLOPT_FTP_USE_EPRT | सत्यसक्रिय एफ़टीपी अपलोड के लिए ईपीआरटी (और एलपीआरटी) का उपयोग करना। उपयोग असत्यईपीआरटी और एलपीआरटी को अक्षम करने और केवल पोर्ट का उपयोग करने के लिए। | |
CURLOPT_FTP_USE_EPSV | सत्यएफ़टीपी स्थानांतरण के दौरान ईपीएसवी कमांड के प्रारंभिक परीक्षण के लिए। यदि आदेश विफल हो जाता है, तो यह वापस PASV पर आ जाएगा। में स्थापित करें असत्यईपीएसवी को अक्षम करने के लिए. | |
CURLOPT_FTP_CREATE_MISSING_DIRS | सत्ययदि एफ़टीपी ऑपरेशन को एक गैर-मौजूद पथ का सामना करना पड़ता है तो लापता निर्देशिकाएँ बनाने के लिए। | |
CURLOPT_FTPAPPEND | सत्यकिसी दूरस्थ फ़ाइल को किसी मौजूदा फ़ाइल पर अधिलेखित करने के बजाय उसे अंत तक लिखना। | |
CURLOPT_TCP_NODELAY | स्थायी रूप से निर्दिष्ट करता है कि TCP_NODELAY विकल्प सेट किया जाना चाहिए या साफ़ किया जाना चाहिए (1 = सेट, 0 = साफ़)। डिफ़ॉल्ट रूप से विकल्प साफ़ हो जाता है. | libcurl 7.11.2 या बाद के संस्करण के साथ निर्मित संस्करणों के लिए PHP 5.2.1 से उपलब्ध है। |
CURLOPT_FTPASCII | उपनाम CURLOPT_ट्रांसफरटेक्स्ट. इसके बजाय इसका प्रयोग करें. | |
CURLOPT_FTPLISTONLY | सत्यएफ़टीपी निर्देशिका से केवल नामों की सूची लौटाने के लिए। | |
CURLOPT_HEADER | सत्यआउटपुट में हेडर शामिल करने के लिए। | |
CURLINFO_HEADER_OUT | सत्यहैंडल क्वेरी स्ट्रिंग को ट्रैक करने के लिए। | PHP 5.1.3 से प्रारंभ होकर उपलब्ध है। उपसर्ग कर्लइन्फो_विशेष रूप से उपयोग किया जाता है। |
CURLOPT_HTTPGET | सत्य HTTP अनुरोध विधि को GET विधि पर रीसेट करने के लिए। चूंकि GET डिफ़ॉल्ट है, इस पैरामीटर की आवश्यकता केवल तभी होती है जब अनुरोध विधि पहले बदल दी गई हो। | |
CURLOPT_HTTPPROXYTUNNEL | सत्यनिर्दिष्ट HTTP प्रॉक्सी के माध्यम से सुरंग बनाने के लिए। | |
CURLOPT_MUT | सत्यकर्ल फ़ंक्शन संदेशों को पूरी तरह से अक्षम करने के लिए। | कर्ल 7.15.5 में हटाया गया (CURLOPT_RETURNTRANSFER विकल्प का उपयोग किया जा सकता है) |
CURLOPT_NETRC | सत्यजिस दूरस्थ साइट से कनेक्शन स्थापित किया जा रहा है, उसके लिए लॉगिन और पासवर्ड के लिए ~/.netrc फ़ाइल को पढ़ने के लिए। | |
CURLOPT_NOBODY | सत्यप्रतिक्रिया निकाय को आउटपुट से बाहर करने के लिए। अनुरोध विधि HEAD पर सेट है। इस सेटिंग को बदल रहा हूँ असत्यइसे वापस GET में नहीं बदलता। | |
CURLOPT_NOPROGRESS | सत्यकर्ल स्थानांतरण पर प्रगति संकेतक को अक्षम करने के लिए।
|
|
CURLOPT_NOSIGNAL | सत्य PHP प्रक्रिया को सिग्नल भेजने वाले किसी भी कर्ल फ़ंक्शन को अनदेखा करना। टाइमआउट पैरामीटर को सही ढंग से काम करने की अनुमति देने के लिए यह विकल्प मल्टी-थ्रेडेड एसएपीआई में डिफ़ॉल्ट रूप से सक्षम है। | |
CURLOPT_POST | सत्यनियमित HTTP POST का उपयोग करने के लिए. यह POST विधि सामान्य का उपयोग करती है , आमतौर पर HTML फॉर्म में उपयोग किया जाता है। | |
CURLOPT_PUT | सत्य HTTP PUT पद्धति का उपयोग करके फ़ाइल डाउनलोड करना। उपयोग की गई फ़ाइल को विकल्पों का उपयोग करके सेट किया जाना चाहिए CURLOPT_INFILEऔर CURLOPT_INFILESIZE. | |
CURLOPT_रिटर्नट्रांसफर | सत्यस्थानांतरण के परिणाम को एक स्ट्रिंग के रूप में वापस करने के लिए कर्ल_एक्सईसी()ब्राउज़र पर सीधे आउटपुट के बजाय। | |
CURLOPT_SAFE_UPLOAD | सत्यउपसर्ग समर्थन अक्षम करने के लिए @ डाउनलोड की गई फ़ाइलों के लिए CURLOPT_POSTFIELDS, जिसका अर्थ है कि मान साथ चले गए @ फ़ील्ड के रूप में सुरक्षित रूप से प्रसारित किया जा सकता है। उपसर्ग के स्थान पर आप विकल्प का उपयोग कर सकते हैं कर्लफ़ाइलडी। | डिफ़ॉल्ट मान के साथ PHP 5.5.0 में जोड़ा गया असत्य. PHP 5.6.0 में यह डिफ़ॉल्ट रूप से बराबर हो गया सत्य. |
CURLOPT_SSL_VERIFYPEER | असत्यहोस्ट प्रमाणपत्र की जाँच करने से cURL को रोकने के लिए। सत्यापित किए जाने वाले वैकल्पिक प्रमाणपत्र पैरामीटर का उपयोग करके निर्दिष्ट किए जा सकते हैं CURLOPT_CAINFOया पैरामीटर द्वारा निर्दिष्ट प्रमाणपत्रों वाली निर्देशिका CURLOPT_CAPATH. | डिफ़ॉल्ट है सत्यकर्ल संस्करण 7.10 के बाद से। डिफ़ॉल्ट वितरण cURL संस्करण 7.10 से प्रारंभ करके स्थापित किया गया है। |
CURLOPT_ट्रांसफरटेक्स्ट | सत्यएफ़टीपी स्थानांतरण के लिए ASCII मोड का उपयोग करना। एलडीएपी का उपयोग करते समय, डेटा HTML के बजाय सादे पाठ में लौटाया जाता है। विंडोज़ सिस्टम पर थ्रेड STDOUTबाइनरी मोड पर सेट नहीं है. | |
CURLOPT_UNRETRICTED_AUTH | सत्यरीडायरेक्ट के दौरान (उपयोग करते समय) लॉगिन और पासवर्ड भेजना जारी रखें CURLOPT_FOLLOWLOCATION), भले ही होस्टनाम बदल जाए। | |
CURLOPT_UPLOAD | सत्यफ़ाइल को सर्वर पर अपलोड करने की तैयारी के लिए। | |
CURLOPT_VERBOSE | सत्यअतिरिक्त जानकारी प्रदर्शित करने के लिए. किसी स्ट्रीम में आउटपुट लिखता है STDERR, या पैरामीटर द्वारा निर्दिष्ट फ़ाइल CURLOPT_STDERR. |
निम्नलिखित विकल्प पैरामीटर मानों के लिए, मान पैरामीटर प्रकार का होना चाहिए पूर्णांक:
पैरामीटर | मान मान सेट करें | टिप्पणियाँ |
---|---|---|
CURLOPT_BUFFERSIZE | प्रत्येक पढ़ने के लिए उपयोग किए जाने वाले बफ़र का आकार। हालाँकि, इसकी कोई गारंटी नहीं है कि यह अनुरोध पूरा हो जाएगा। | कर्ल 7.10 में जोड़ा गया। |
CURLOPT_CLOSEPOLICY | स्थिरांकों में से एक कर्लक्लोज़पॉलिसी_*.
|
PHP 5.6.0 में हटा दिया गया। |
CURLOPT_CONNECTTIMEOUT | कनेक्ट करने का प्रयास करते समय प्रतीक्षा करने वाले सेकंड की संख्या. अनिश्चित काल तक प्रतीक्षा करने के लिए 0 का प्रयोग करें। | |
CURLOPT_CONNECTTIMEOUT_MS | कनेक्ट करने का प्रयास करते समय प्रतीक्षा करने के लिए मिलीसेकंड की संख्या। अनिश्चित काल तक प्रतीक्षा करने के लिए 0 का प्रयोग करें। यदि libcurl को सिस्टम के मानक नाम रिज़ॉल्वर का उपयोग करके संकलित किया गया है, तो कनेक्शन अभी भी टाइमआउट के रूप में पूर्ण सेकंड प्रतीक्षा का उपयोग करेगा, जिसमें न्यूनतम 1 सेकंड की अनुमति होगी। | कर्ल संस्करण 7.16.2 में जोड़ा गया। PHP 5.2.3 से प्रारंभ होकर उपलब्ध है। |
CURLOPT_DNS_CACHE_TIMEOUT | DNS रिकॉर्ड मेमोरी में संग्रहीत सेकंड की संख्या। डिफ़ॉल्ट रूप से, यह पैरामीटर 120 (2 मिनट) है। | |
CURLOPT_FTPSSLAUTH | एफ़टीपी प्रमाणीकरण विधि (सक्रिय मोड में): CURLFTPAUTH_SSL(एसएसएल पहले जांचा जाता है), CURLFTPAUTH_TLS(टीएलएस पहले जांचा गया) या CURLFTPAUTH_DEFAULT(cURL स्वयं निर्णय लेता है)। | कर्ल संस्करण 7.12.2 में जोड़ा गया। |
CURLOPT_HTTP_संस्करण | CURL_HTTP_VERSION_NONE (डिफ़ॉल्ट रूप से, CURL चुनता है कि किस संस्करण का उपयोग करना है), CURL_HTTP_VERSION_1_0 (HTTP/1.0 को बाध्य करें), या CURL_HTTP_VERSION_1_1 (HTTP/1.1 को बाध्य करें)। | |
CURLOPT_HTTPAUTH |
आप बिटवाइज़ ऑपरेटर का उपयोग कर सकते हैं | (या) कई विधियों को एक साथ जोड़ना। इस मामले में, कर्ल समर्थित प्राधिकरण विधियों के लिए सर्वर का सर्वेक्षण करेगा और सर्वोत्तम का चयन करेगा। CURLAUTH_ANY एक उपनाम है कर्लौथ_बेसिक | कर्लौथ_डाइजेस्ट | CURLAUTH_GSSबातचीत | CURLAUTH_NTLM. CURLAUTH_ANYSAFE एक उपनाम है कर्लौथ_डाइजेस्ट | CURLAUTH_GSSबातचीत | CURLAUTH_NTLM. |
|
CURLOPT_INFILESIZE | किसी दूरस्थ सर्वर पर फ़ाइल अपलोड करते समय अपेक्षित फ़ाइल आकार, बाइट्स में। कृपया ध्यान दें कि इस विकल्प का उपयोग करने से इस मूल्य से अधिक डेटा भेजा जाना बंद नहीं होगा, क्योंकि भेजा गया डेटा परिणाम पर निर्भर करता है CURLOPT_READFUNCTION. | |
CURLOPT_LOW_SPEED_LIMIT | डेटा स्थानांतरण दर के लिए ऊपरी सीमा, बाइट्स प्रति सेकंड में। सत्यापन भीतर होता है CURLOPT_LOW_SPEED_TIMEसेकंड, जिसके बाद PHP स्थानांतरण को बहुत धीमा मानता है और इसे रोक देता है। | |
CURLOPT_LOW_SPEED_TIME | सेकंड की अधिकतम संख्या जिसके दौरान स्थानांतरण दर अधिक नहीं होनी चाहिए CURLOPT_LOW_SPEED_LIMIT, अन्यथा PHP स्थानांतरण को बहुत धीमा के रूप में चिह्नित करेगा और इसे रोक देगा। | |
CURLOPT_MAXCONNECTS | लगातार कनेक्शन की अधिकतम संख्या. जब सीमा पूरी हो जाती है, तो पैरामीटर का उपयोग यह निर्धारित करने के लिए किया जाता है कि कौन सा कनेक्शन बंद करना है। CURLOPT_CLOSEPOLICY. | |
CURLOPT_MAXREDIRS | स्वीकृत रीडायरेक्ट की अधिकतम संख्या. इस विकल्प का उपयोग विकल्प के साथ करें CURLOPT_FOLLOWLOCATION. | |
CURLOPT_पोर्ट | वैकल्पिक कनेक्शन पोर्ट. | |
CURLOPT_POSTREDIR | एक बिट मास्क जिसमें 1 (301 स्थायी रूप से स्थानांतरित), 2 (302 मिला) और 4 (303 अन्य देखें) शामिल है, यह निर्दिष्ट करने के लिए कि विकल्प सक्षम होने पर HTTP POST विधि संसाधित की जानी चाहिए या नहीं CURLOPT_FOLLOWLOCATIONयदि निर्दिष्ट प्रकार का पुनर्निर्देशन हुआ। | कर्ल 7.19.1 में जोड़ा गया। PHP 5.3.2 से उपलब्ध है। |
CURLOPT_प्रोटोकॉल |
मूल्यों का बिट मुखौटा कर्लप्रोटो_*. यह मास्क libcurl द्वारा उपयोग किए जाने वाले प्रोटोकॉल को सीमित करता है। यह आपको libcurl को बड़ी संख्या में प्रोटोकॉल के साथ काम करने की अनुमति देता है, और कुछ स्थानांतरणों के संचालन को केवल उनके एक सबसेट तक सीमित करता है। डिफ़ॉल्ट रूप से, libcurl सभी समर्थित प्रोटोकॉल का उपयोग करता है। पैरामीटर भी देखें CURLOPT_REDIR_प्रोटोकॉल. सही प्रोटोकॉल मान: CURLPROTO_HTTP, CURLPROTO_HTTPS, CURLPROTO_FTP, CURLPROTO_FTPS, CURLPROTO_SCP, CURLPROTO_SFTP, CURLPROTO_TELNET, CURLPROTO_LDAP, CURLPROTO_LDAPS, CURLPROTO_DICT, CURLPROTO_FILE, CURLP ROTO_TF टीपी, CURLPROTO_ALL |
|
CURLOPT_PROXYAUTH | प्रॉक्सी सर्वर से कनेक्ट करते समय HTTP प्राधिकरण विधियों का उपयोग किया जाता है। उन्हीं बिट मास्क का उपयोग करें जो पैरामीटर के लिए वर्णित थे CURLOPT_HTTPAUTH. वर्तमान में, प्रॉक्सी प्राधिकरण के लिए केवल CURLAUTH_BASIC और CURLAUTH_NTLM समर्थित हैं। | कर्ल संस्करण 7.10.7 में जोड़ा गया। |
CURLOPT_प्रॉक्सीपोर्ट | प्रॉक्सी सर्वर का पोर्ट नंबर जिससे कनेक्शन बनाया गया है। इस नंबर को पैरामीटर का उपयोग करके भी सेट किया जा सकता है CURLOPT_प्रॉक्सी. | |
CURLOPT_PROXYTYPE | या तो CURLPROXY_HTTP (डिफ़ॉल्ट) या CURLPROXY_SOCKS5। | कर्ल 7.10 में जोड़ा गया। |
CURLOPT_REDIR_प्रोटोकॉल | मूल्यों का बिट मुखौटा कर्लप्रोटो_*. यह बिटमास्क रीडायरेक्ट करते समय (पैरामीटर सक्षम होने पर) libcurl द्वारा उपयोग किए जाने वाले प्रोटोकॉल को सीमित करता है CURLOPT_FOLLOWLOCATION). यह आपको कुछ ट्रांसमिशन के लिए रीडायरेक्ट करते समय उपयोग किए जाने वाले प्रोटोकॉल के सेट को सीमित करने की अनुमति देता है। डिफ़ॉल्ट रूप से, libcurl FILE और SCP को छोड़कर सभी प्रोटोकॉल का समर्थन करता है। 7.19.4 से पहले के संस्करणों में, बिना किसी अपवाद के सभी प्रोटोकॉल के लिए पुनर्निर्देशन का उपयोग किया गया था। पैरामीटर विवरण भी देखें CURLOPT_प्रोटोकॉलप्रोटोकॉल मानों के साथ स्थिरांकों की सूची के लिए। | कर्ल संस्करण 7.19.4 में जोड़ा गया। |
CURLOPT_RESUME_FROM | ट्रांसमिशन प्रारंभ ऑफसेट, बाइट्स में। | |
CURLOPT_SSL_VERIFYHOST | एसएसएल प्रमाणपत्र में एक सामान्य नाम के अस्तित्व की जांच करने के लिए 1 का उपयोग करें। यह जांचने के लिए 2 का उपयोग करें कि सामान्य नाम मौजूद है और निर्दिष्ट होस्ट से मेल भी खाता है। युद्ध के माहौल में, इस पैरामीटर का मान 2 (डिफ़ॉल्ट रूप से सेट) होना चाहिए। | कर्ल 7.28.1 में मान 1 के लिए समर्थन हटा दिया गया है |
CURLOPT_SSLVसंस्करण | स्थिरांकों में से एक CURL_SSLVERSION_DEFAULT (0), CURL_SSLVERSION_TLSv1 (1), CURL_SSLVERSION_SSLv2 (2), CURL_SSLVERSION_SSLv3 (3), CURL_SSLVERSION_TLSv1_0 (4), CURL_SSLVERSION_TLSv1_1(5)या CURL_SSLVERSION_TLSv1_2 (6). | |
CURLOPT_TIMECONDITION | पैरामीटर व्याख्या विधि CURLOPT_TIMEVALUE. पृष्ठ को वापस करने के लिए CURL_TIMECOND_IFMODSINCE का उपयोग केवल तभी करें जब यह पैरामीटर में निर्दिष्ट समय के बाद से बदल गया हो CURLOPT_TIMEVALUE. यदि पृष्ठ संशोधित नहीं किया गया है, तो शीर्षक वापस कर दिया जाएगा "304 संशोधित नहीं", जिसका अर्थ है कि पैरामीटर CURLOPT_HEADERमें स्थापित सत्य. विपरीत प्रभाव के लिए CURL_TIMECOND_IFUNMODSINCE का उपयोग करें। डिफ़ॉल्ट CURL_TIMECOND_IFMODSINCE है. | |
CURLOPT_TIMEOUT | कर्ल फ़ंक्शंस निष्पादित करने के लिए अनुमत सेकंड की अधिकतम संख्या। | |
CURLOPT_TIMEOUT_MS | कर्ल फ़ंक्शंस निष्पादित करने के लिए मिलीसेकेंड की अधिकतम संख्या। यदि libcurl सामान्य सिस्टम नाम रिज़ॉल्वर का उपयोग करके बनाया गया है, तो यह कनेक्शन अवधि अभी भी दूसरे राउंडिंग टाइमआउट का उपयोग करेगी, जिसमें न्यूनतम टाइमआउट एक सेकंड की अनुमति होगी। | कर्ल संस्करण 7.16.2 में जोड़ा गया। PHP 5.2.3 से प्रारंभ होकर उपलब्ध है। |
CURLOPT_TIMEVALUE | 1 जनवरी, 1970 से सेकंड की संख्या। इस समय का उपयोग पैरामीटर द्वारा किया जाएगा CURLOPT_TIMECONDITION. डिफ़ॉल्ट रूप से, CURL_TIMECOND_IFMODSINCE पैरामीटर का उपयोग किया जाता है। | |
CURLOPT_MAX_RECV_SPEED_LARGE | यदि डाउनलोड गति पूरे स्थानांतरण के दौरान औसतन इस मान (बाइट्स प्रति सेकंड में निर्दिष्ट) से अधिक हो जाती है, तो औसत गति को इस पैरामीटर से कम या उसके बराबर बनाए रखने के लिए डाउनलोड रोक दिया जाएगा। डिफ़ॉल्ट रूप से, गति सीमित नहीं है. | |
CURLOPT_MAX_SEND_SPEED_LARGE | यदि पूरे स्थानांतरण के दौरान सर्वर पर अपलोड औसतन इस मान (बाइट्स प्रति सेकंड में निर्दिष्ट) से अधिक हो जाता है, तो इस पैरामीटर से कम या उसके बराबर औसत गति बनाए रखने के लिए अपलोड रोक दिया जाएगा। डिफ़ॉल्ट रूप से, गति सीमित नहीं है. | कर्ल संस्करण 7.15.5 में जोड़ा गया। PHP 5.4.0 से शुरू होकर उपलब्ध है। |
CURLOPT_SSH_AUTH_TYPES | एक बिटमास्क जिसमें एक या अधिक स्थिरांक होते हैं: CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_कीबोर्ड. स्थापित करना CURLSSH_AUTH_ANYताकि libcurl उनमें से किसी एक को स्वतंत्र रूप से चुन सके। | कर्ल 7.16.1 में जोड़ा गया। |
CURLOPT_IPRESOLVE | किसी एप्लिकेशन को उस आईपी पते के प्रकार का चयन करने की अनुमति देता है जिसके साथ होस्टनाम निर्धारित किया जाता है। यदि आप ऐसे होस्टनाम का उपयोग कर रहे हैं जो आईपी पते के एक से अधिक संस्करणों से लिया गया है तो यह आवश्यक है। संभावित मान हो सकते हैं CURL_IPRESOLVE_जो भी हो, CURL_IPRESOLVE_V4, CURL_IPRESOLVE_V6, और डिफ़ॉल्ट रूप से CURL_IPRESOLVE_जो भी हो. | कर्ल 7.10.8 में जोड़ा गया। |
निम्नलिखित विकल्प पैरामीटर मानों के लिए, मान पैरामीटर प्रकार का होना चाहिए डोरी:
पैरामीटर | मान मान सेट करें | टिप्पणियाँ |
---|---|---|
CURLOPT_CAINFO | एक या अधिक प्रमाणपत्र वाली फ़ाइल का नाम जिसके विरुद्ध नोड्स की जाँच की जाएगी। यह पैरामीटर केवल तभी समझ में आता है जब इसके साथ संयोजन में उपयोग किया जाता है CURLOPT_SSL_VERIFYPEER. | एक निरपेक्ष पथ की आवश्यकता है. |
CURLOPT_CAPATH | एक निर्देशिका जिसमें कई सीए प्रमाणपत्र शामिल हैं। इस विकल्प का प्रयोग साथ में करें CURLOPT_SSL_VERIFYPEER. | |
CURLOPT_कुकी | शीर्षलेख सामग्री "कुकी:", HTTP अनुरोध में उपयोग किया जाता है। कृपया ध्यान दें कि एकाधिक कुकीज़ को अर्धविराम और उसके बाद एक स्थान द्वारा अलग किया जाता है (उदाहरण के लिए, " फल=सेब; रंग=लाल") | |
CURLOPT_कुकीफ़ाइल | कुकीज़ वाली फ़ाइल का नाम. यह फ़ाइल नेटस्केप प्रारूप में होनी चाहिए या फ़ाइल पर केवल HTTP हेडर लिखा होना चाहिए। यदि एक खाली स्ट्रिंग को फ़ाइल नाम के रूप में पारित किया जाता है, तो कुकीज़ सहेजी नहीं जाएंगी, लेकिन उनकी प्रोसेसिंग अभी भी सक्षम होगी। | |
CURLOPT_COOKIEJAR | फ़ाइल का नाम जिसमें हैंडल बंद होने के बाद वर्तमान स्थानांतरण की सभी आंतरिक कुकीज़ सहेजी जाएंगी, उदाहरण के लिए कर्ल_क्लोज़ को कॉल करने के बाद। | |
CURLOPT_CUSTOMREQUEST | इसके बजाय कस्टम अनुरोध विधि का उपयोग किया गया "पाना"या "सिर" HTTP अनुरोध करते समय। यह प्रश्नों के लिए उपयोगी है "मिटाना"या अन्य, अधिक दुर्लभ HTTP अनुरोध। जैसे शब्दों का सही अर्थ होगा "पाना", "डाक", "जोड़ना"और इसी तरह; वे। यहां संपूर्ण HTTP अनुरोध पंक्ति दर्ज न करें. उदाहरण के लिए, एक संकेत "/index.html HTTP/1.0\r\n\r\n प्राप्त करें"ग़लत होगा.
|
|
CURLOPT_EGDSOCKET | पसंद CURLOPT_RANDOM_FILE, सिवाय इसके कि फ़ाइल नाम एन्ट्रॉपी गैदरिंग डेमॉन सॉकेट पर सेट है। | |
CURLOPT_ENCODING | शीर्षलेख सामग्री "स्वीकार-एन्कोडिंग:". यह अनुरोध को डिकोड करने की अनुमति देता है। समर्थित एनकोडिंग हैं "पहचान", "हवा निकालना"और "जीज़िप". यदि एक खाली स्ट्रिंग पारित की जाती है, "" , सभी समर्थित एन्कोडिंग प्रकारों वाला एक हेडर भेजा जाता है। | कर्ल 7.10 में जोड़ा गया। |
CURLOPT_FTPPORT | वह मान जिसका उपयोग एफ़टीपी "पोर्ट" कमांड के लिए आईपी पता निर्धारित करने के लिए किया जाएगा। "पोर्ट" कमांड सर्वर को बताता है कि उसे किस आईपी पते से कनेक्ट होना चाहिए। यह एक आईपी पता, एक होस्टनाम, एक नेटवर्क इंटरफ़ेस नाम (यूनिक्स के तहत), या डिफ़ॉल्ट सिस्टम आईपी पते का उपयोग करने के लिए बस "-" हो सकता है। | |
CURLOPT_इंटरफेस | उपयोग करने के लिए नेटवर्क इंटरफ़ेस का नाम. एक इंटरफ़ेस नाम, एक आईपी पता, या एक होस्ट नाम हो सकता है। | |
CURLOPT_KEYPASSWD | निजी कुंजी का उपयोग करने के लिए पासवर्ड आवश्यक है CURLOPT_SSLKEYया CURLOPT_SSH_PRIVATE_KEYFILE. | कर्ल 7.16.1 में जोड़ा गया। |
CURLOPT_KRB4स्तर | सुरक्षा स्तर KRB4 (Kerberos 4)। निम्नलिखित में से कोई भी मान (सबसे कमजोर से सबसे मजबूत के क्रम में) सही हैं: "स्पष्ट", "सुरक्षित", "गोपनीय", "निजी"।. यदि निर्दिष्ट स्ट्रिंग दिए गए मानों से भिन्न है, तो मान का उपयोग किया जाएगा "निजी". इस विकल्प को सेट कर रहा हूँ व्यर्थ KRB4 सुरक्षा को पूरी तरह से अक्षम कर देगा. फिलहाल, KRB4 सुरक्षा केवल FTP लेनदेन के साथ काम करती है। | |
CURLOPT_POSTFIELDS | HTTP POST अनुरोध में प्रेषित सभी डेटा। किसी फ़ाइल को स्थानांतरित करने के लिए, फ़ाइल नाम से पहले निर्दिष्ट करें @ , और फ़ाइल के पूर्ण पथ का भी उपयोग करें। फ़ाइल प्रकार को प्रारूप का उपयोग करके भी निर्दिष्ट किया जा सकता है " ;प्रकार=माइमटाइप" फ़ाइल नाम का अनुसरण करें। इस पैरामीटर को यूआरएल-एन्कोडेड स्ट्रिंग के रूप में पारित किया जा सकता है, जैसे " पैरा1=वैल1&पैरा2=वैल2&...", और एक सरणी के रूप में, जिसकी कुंजियाँ फ़ील्ड के नाम होंगी, और मान उनकी सामग्री होंगी। यदि मान एक सरणी है, तो हेडर सामग्री प्रकारपर सेट किया जाएगा मल्टीपार्ट/फॉर्म-डेटा. PHP 5.2.0 से प्रारंभ करते समय, उपसर्ग के साथ फ़ाइलें स्थानांतरित करते समय @ , मान एक सरणी होना चाहिए। PHP 5.5.0 के बाद से, उपसर्ग @ बहिष्कृत है और फ़ाइलें इसका उपयोग करके भेजी जा सकती हैं कर्लफ़ाइल. उपसर्ग @ से शुरू होने वाले मानों को अनुमति देने के लिए अक्षम किया जा सकता है @ विकल्प सेट करके CURLOPT_SAFE_UPLOADअर्थ में सत्य. | |
CURLOPT_प्रॉक्सी | HTTP प्रॉक्सी जिसके माध्यम से अनुरोधों को रूट किया जाएगा। | |
CURLOPT_PROXYUSERPWD | फॉर्म में लॉगिन और पासवर्ड लिखा हुआ है ":" , प्रॉक्सी के माध्यम से कनेक्ट करते समय उपयोग किया जाता है। | |
CURLOPT_RANDOM_FILE | एसएसएल के लिए यादृच्छिक संख्या जनरेटर को आरंभ करने के लिए उपयोग की जाने वाली फ़ाइल का नाम। | |
CURLOPT_RANGE | डाउनलोड किए जाने वाले डेटा की रेंज, प्रारूप में "एक्स-वाई", और या तो X या Y को छोड़ा जा सकता है। HTTP प्रोटोकॉल अल्पविराम द्वारा अलग की गई कई श्रेणियों के प्रसारण का भी समर्थन करता है, वे प्रारूप में निर्दिष्ट हैं "एक्स-वाई,एन-एम". | |
CURLOPT_रेफ़रर | शीर्षलेख सामग्री "रेफ़रर:", जिसका उपयोग HTTP अनुरोध में किया जाएगा। | |
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 | एक स्ट्रिंग जिसमें 32 हेक्साडेसिमल अंक हैं। स्ट्रिंग को दूरस्थ कंप्यूटर की सार्वजनिक कुंजी का MD5 चेकसम होना चाहिए, और जब तक चेकसम सार्वजनिक कुंजी से मेल नहीं खाता तब तक libcurl दूरस्थ होस्ट से कनेक्शन रीसेट कर देगा। यह विकल्प केवल एससीपी और एसएफटीपी का उपयोग करके डेटा स्थानांतरित करने के लिए है। | कर्ल 7.17.1 में जोड़ा गया। |
CURLOPT_SSH_PUBLIC_KEYFILE | आपकी सार्वजनिक कुंजी के लिए फ़ाइल नाम. यदि निर्दिष्ट नहीं है, तो libcurl $HOME/.ssh/id_dsa.pub फ़ाइल में डिफ़ॉल्ट हो जाता है यदि HOME पर्यावरण चर सेट है और यदि HOME पर्यावरण चर सेट नहीं है तो फ़ाइल "id_dsa.pub" वर्तमान निर्देशिका में है। | कर्ल 7.16.1 में जोड़ा गया। |
CURLOPT_SSH_PRIVATE_KEYFILE | आपकी निजी कुंजी के लिए फ़ाइल नाम. यदि निर्दिष्ट नहीं है, तो libcurl $HOME/.ssh/id_dsa फ़ाइल में डिफ़ॉल्ट हो जाता है यदि HOME पर्यावरण चर सेट है और यदि HOME पर्यावरण चर सेट नहीं है तो वर्तमान निर्देशिका में "id_dsa" फ़ाइल। यदि फ़ाइल पासवर्ड से सुरक्षित है, तो पासवर्ड का उपयोग करके सेट करें CURLOPT_KEYPASSWD. | कर्ल 7.16.1 में जोड़ा गया। |
CURLOPT_SSL_CIPHER_LIST | एसएसएल स्थानांतरण में प्रयुक्त सिफर की सूची। उदाहरण के लिए, RC4-SHAऔर टीएलएसवी1वैध सिफर सूचियाँ हैं। | |
CURLOPT_SSLCERT | सही ढंग से स्वरूपित PEM प्रमाणपत्र वाली फ़ाइल का नाम। | |
CURLOPT_SSLCERTPASSWD | प्रमाणपत्र का उपयोग करने के लिए पासवर्ड आवश्यक है CURLOPT_SSLCERT. | |
CURLOPT_SSLCERTTYPE | प्रमाणपत्र प्रारूप. प्रारूप समर्थित "पीईएम"(गलती करना), "डीईआर"और "इंग्लैंड". | कर्ल संस्करण 7.9.3 में जोड़ा गया। |
CURLOPT_SSLENGINE | पैरामीटर में निर्दिष्ट एसएसएल निजी कुंजी के लिए एन्क्रिप्शन इंजन आईडी CURLOPT_SSLKEY. | |
CURLOPT_SSLENGINE_DEFAULT | असममित एन्क्रिप्शन संचालन के लिए उपयोग किए जाने वाले एन्क्रिप्शन तंत्र का पहचानकर्ता। | |
CURLOPT_SSLKEY | SSL निजी कुंजी फ़ाइल का नाम. | |
CURLOPT_SSLKEYPASSWD | पैरामीटर द्वारा निर्दिष्ट एसएसएल निजी कुंजी का उपयोग करने के लिए आवश्यक गुप्त पासवर्ड CURLOPT_SSLKEY.
|
|
CURLOPT_SSLKEYTYPE | पैरामीटर में निर्दिष्ट एसएसएल निजी कुंजी का प्रकार CURLOPT_SSLKEY. निम्नलिखित प्रमुख प्रकार समर्थित हैं: "पीईएम"(गलती करना), "डीईआर"और "इंग्लैंड". | |
CURLOPT_URL | डाउनलोड करने योग्य यूआरएल. यह पैरामीटर किसी सत्र को प्रारंभ करते समय भी सेट किया जा सकता है कर्ल_इनिट(). | |
CURLOPT_USERAGENT | शीर्षलेख सामग्री "उपयोगकर्ता एजेंट: ", एक HTTP अनुरोध में भेजा गया। | |
CURLOPT_USERPWD | कनेक्शन के दौरान उपयोग किया गया लॉगिन और पासवर्ड, प्रारूप में निर्दिष्ट है ":" . |
निम्नलिखित विकल्प पैरामीटर मानों के लिए, मान पैरामीटर एक सरणी होना चाहिए:
पैरामीटर | मान मान सेट करें | टिप्पणियाँ |
---|---|---|
CURLOPT_HTTP200ALIASES | HTTP 200 प्रतिक्रियाओं की एक श्रृंखला जिसे गलत प्रतिक्रियाओं के बजाय सही प्रतिक्रियाओं के रूप में माना जाएगा। | कर्ल संस्करण 7.10.3 में जोड़ा गया। |
CURLOPT_HTTPHEADER | सेट HTTP हेडर की एक सरणी, प्रारूप सरणी में ("सामग्री-प्रकार: टेक्स्ट/सादा", "सामग्री-लंबाई: 100") | |
CURLOPT_POSTquote | एफ़टीपी अनुरोध पूरा होने के बाद सर्वर पर निष्पादित एफ़टीपी कमांड की एक श्रृंखला। | |
CURLOPT_उद्धरण | एफ़टीपी अनुरोध करने से पहले सर्वर पर निष्पादित एफ़टीपी आदेशों की एक श्रृंखला। |
निम्नलिखित विकल्प पैरामीटर मानों के लिए, मान पैरामीटर एक स्ट्रीम हैंडल होना चाहिए (उदाहरण के लिए, फ़ंक्शन द्वारा लौटाया गया)। fopen()):
पैरामीटर | मान मान सेट करें |
---|---|
CURLOPT_फ़ाइल | वह फ़ाइल जिसमें स्थानांतरण परिणाम लिखा जाएगा। डिफ़ॉल्ट आउटपुट स्ट्रीम STDOUT(ब्राउज़र विंडो). |
CURLOPT_INFILE | वह फ़ाइल जिससे डेटा सर्वर पर अपलोड होने पर पढ़ा जाना चाहिए। |
CURLOPT_STDERR | त्रुटि स्ट्रीम के स्थान पर वैकल्पिक त्रुटि आउटपुट फ़ाइल का उपयोग किया गया STDERR. |
CURLOPT_WRITEHEADER | वह फ़ाइल जिसमें वर्तमान ऑपरेशन के हेडर लिखे जायेंगे। |
निम्नलिखित विकल्प पैरामीटर मानों के लिए, मान पैरामीटर एक वैध फ़ंक्शन नाम या समापन होना चाहिए:
पैरामीटर | मान मान सेट करें |
---|---|
CURLOPT_HEADERFUNCTION | कॉलबैक फ़ंक्शन दो पैरामीटर लेता है। पहला पैरामीटर कर्ल हैंडल है, दूसरा पैरामीटर एक स्ट्रिंग है जिसमें लिखे जाने वाले हेडर हैं। हेडर को इस कॉलबैक फ़ंक्शन का उपयोग करके लिखा जाना चाहिए। लिखे गए बाइट्स की संख्या वापस करनी चाहिए। |
CURLOPT_PASSWDFUNCTION | कॉलबैक फ़ंक्शन तीन पैरामीटर लेता है। पहला पैरामीटर कर्ल हैंडल है, दूसरा पैरामीटर पासवर्ड प्रॉम्प्ट स्ट्रिंग है, और तीसरा पैरामीटर अधिकतम पासवर्ड लंबाई है। पासवर्ड युक्त एक स्ट्रिंग लौटानी चाहिए। |
CURLOPT_PROGRESSFUNCTION |
कॉलबैक फ़ंक्शन पांच पैरामीटर लेता है। पहला है कर्ल डिस्क्रिप्टर, दूसरा है सर्वर से डाउनलोड किए जाने वाले अपेक्षित बाइट्स की कुल संख्या, तीसरा है पहले से डाउनलोड किए गए बाइट्स की संख्या, चौथा है सर्वर पर भेजे जाने वाले अपेक्षित बाइट्स की कुल संख्या, और पाँचवाँ पहले से भेजे गए बाइट्स की संख्या है।
स्थानांतरण रद्द करने के लिए आप गैर-शून्य मान वापस कर सकते हैं। इस स्थिति में एक त्रुटि प्रदर्शित होगी CURLE_ABORTED_BY_CALLBACK. |
CURLOPT_READFUNCTION | कॉलबैक फ़ंक्शन तीन पैरामीटर लेता है। पहला पैरामीटर कर्ल हैंडल है, दूसरा पैरामीटर विकल्प के माध्यम से कर्ल को पास किया गया स्ट्रीम संसाधन है CURLOPT_INFILE, और तीसरा पैरामीटर पढ़ने के लिए डेटा की अधिकतम अनुमत मात्रा है। कॉलबैक फ़ंक्शन को आमतौर पर पारित स्ट्रीमिंग संसाधन से पढ़कर डेटा की अनुरोधित मात्रा से अधिक लंबाई की एक स्ट्रिंग वापस नहीं करनी चाहिए। फ़ाइल के अंत का संकेत देने के लिए एक खाली स्ट्रिंग लौटानी चाहिए ईओएफ. |
CURLOPT_WRITEFUNCTION | कॉलबैक फ़ंक्शन दो पैरामीटर लेता है। पहला पैरामीटर कर्ल हैंडल है, और दूसरा पैरामीटर वह स्ट्रिंग है जिसमें लिखा जाने वाला डेटा है। इस फ़ंक्शन का उपयोग करके डेटा सहेजा जाना चाहिए। इसे लिखे गए बाइट्स की सटीक संख्या लौटानी होगी, अन्यथा डाउनलोड एक त्रुटि के साथ निरस्त कर दिया जाएगा। |
अन्य अर्थ:
मान लौटाएँ
रिटर्न सत्यसफल समापन पर या असत्यत्रुटि होने पर.
परिवर्तनों की सूची
संस्करण | विवरण |
---|---|
5.6.0 | विकल्प कर्ल_सुरक्षित_अपलोडअब का एक डिफ़ॉल्ट मान है सत्य. |
5.6.0 | विकल्प हटा दिया गया CURLOPT_CLOSEPOLICYऔर उससे जुड़े अर्थ. |
5.5.0 | कर्ल संसाधन को कॉलबैक फ़ंक्शन के पहले तर्क के रूप में जोड़ा गया है CURLOPT_PROGRESSFUNCTION. |
5.5.0 | विकल्प जोड़ा गया CURLOPT_SHARE. |
5.3.0 | विकल्प जोड़ा गया CURLOPT_PROGRESSFUNCTION. |
5.2.10 | विकल्प जोड़े गए CURLOPT_प्रोटोकॉलऔर CURLOPT_REDIR_प्रोटोकॉल. |
5.1.0 | विकल्प जोड़े गए CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTHऔर CURLOPT_TIMECONDITION. |
5.0.0 | विकल्प जोड़े गए CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRETRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_प्रॉक्सीपोर्ट, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPEऔर CURLOPT_HTTP200ALIASES. |
उदाहरण
उदाहरण #1 एक कर्ल सत्र प्रारंभ करना और एक वेब पेज लोड करना
// एक नया कर्ल संसाधन बनाएं /* http://localhost/upload.php: $ch = कर्ल_इनिट(); $ डेटा = सरणी ("नाम" => "फू", "फ़ाइल" => "@/home/user/test.png"); कर्ल_सेटॉप ($ch, CURLOPT_URL, "http://localhost/upload.php"); कर्ल_एक्सईसी($ch); इस उदाहरण को चलाने का परिणाम: ऐरे ( => फू) ऐरे ( => ऐरे ( => test.png => छवि/पीएनजी => /tmp/phpcpjNeQ => 0 => 279)) टिप्पणी: के लिए एक सरणी पास करना CURLOPT_POSTFIELDSडेटा को एन्कोड करता है मल्टीपार्ट/फॉर्म-डेटा, जबकि URL-एन्कोडेड स्ट्रिंग को पास करने से डेटा इनकोड हो जाएगा एप्लिकेशन/x-www-form-urlencoded. कर्ल एक उपकरण है जो आपको विभिन्न सर्वरों के साथ इंटरैक्ट करने की अनुमति देता है और कई प्रोटोकॉल का समर्थन करता है: HTTP, FTP, TELNET, आदि। कर्ल मूल रूप से एक कमांड लाइन उपयोगिता है। लेकिन, सौभाग्य से हमारे लिए, PHP कर्ल लाइब्रेरी के साथ काम करने का समर्थन करता है। इस लेख में हम cURL के साथ काम करने के गैर-तुच्छ उदाहरण देखेंगे। वास्तव में, किसी अन्य सर्वर पर अनुरोध भेजने के कई अन्य तरीके हैं, उदाहरण के लिए, किसी पृष्ठ की सामग्री को पुनः प्राप्त करना। बहुत से लोग, अधिकतर आलस्य के कारण, कर्ल के बजाय सरल PHP फ़ंक्शंस का उपयोग करते हैं: $सामग्री = file_get_contents('http://www.example.com'); // या $ लाइनें = फ़ाइल ("http://www.example.com"); // या रीडफ़ाइल ("http://www.example.com"); हालाँकि, वे कुशल त्रुटि प्रबंधन की अनुमति नहीं देते हैं। ऐसे कई कार्य भी हैं जो वे बिल्कुल नहीं कर सकते हैं - उदाहरण के लिए, कुकीज़ के साथ काम करना, प्राधिकरण, पोस्ट अनुरोध, फ़ाइलें डाउनलोड करना। cUrl एक शक्तिशाली उपकरण है जो कई प्रोटोकॉल का समर्थन करता है और संपूर्ण अनुरोध जानकारी प्रदान करता है। जटिल उदाहरणों पर आगे बढ़ने से पहले, आइए PHP में कर्ल अनुरोध की मूल संरचना को देखें। PHP में कर्ल अनुरोध करने के लिए, आपको 4 मुख्य कदम उठाने होंगे: हम इस लेख में अधिकतर चरण #2 पर ध्यान देंगे क्योंकि यहीं जादू होता है। कर्ल विकल्पों की सूची बहुत बड़ी है, इसलिए हम आज सभी विकल्पों पर विचार नहीं करेंगे, बल्कि उनका उपयोग करेंगे जो विशिष्ट समस्याओं को हल करने के लिए उपयोगी हैं। यदि आवश्यक हो, तो आप त्रुटियों को ट्रैक करने के लिए निम्नलिखित पंक्तियाँ जोड़ सकते हैं: //...$आउटपुट = कर्ल_एक्सईसी($ch); अगर ($आउटपुट === गलत) (इको "कर्ल त्रुटि:"। कर्ल_त्रुटि($ch); ) // ... कृपया ध्यान दें कि हम "==" के बजाय "===" का उपयोग करते हैं क्योंकि खाली सर्वर प्रतिक्रिया और बूलियन मान FALSE के बीच अंतर करना आवश्यक है, जो किसी त्रुटि के मामले में लौटाया जाता है। एक अन्य वैकल्पिक कदम कर्ल अनुरोध के निष्पादित होने के बाद उसके बारे में जानकारी प्राप्त करना है। //...curl_exec($ch); $जानकारी = कर्ल_गेटइन्फो($ch); प्रतिध्वनि "लिया"। $ जानकारी["कुल_समय"]। "यूआरएल के लिए सेकंड"। $जानकारी["यूआरएल"]; // ... परिणामस्वरूप, आपको निम्नलिखित जानकारी के साथ एक सरणी प्राप्त होगी: इस उदाहरण में, हम एक स्क्रिप्ट लिखेंगे जो विभिन्न ब्राउज़र सेटिंग्स के आधार पर रीडायरेक्ट का पता लगाएगी। उदाहरण के लिए, कुछ साइटें विज़िटरों को मोबाइल उपकरणों से अन्य देशों के विज़िटरों पर पुनर्निर्देशित करती हैं। हम उपयोगकर्ता-एजेंट और भाषा सहित अपने स्वयं के हेडर सेट करने के लिए CURLOPT_HTTPHEADER विकल्प का उपयोग करेंगे, और देखेंगे कि साइटें हमें कहां रीडायरेक्ट करती हैं। // यूआरएल $यूआरएल = सरणी('http://www.cnn.com', 'http://www.mozilla.com', 'http://www.facebook.com'); // ब्राउज़र $ब्राउज़र = सरणी("मानक" => सरणी ("user_agent" => "मोज़िला/5.0 (विंडोज़; यू; विंडोज़ एनटी 6.1; एन-यूएस; आरवी:1.9.1.6) गेको/20091201 फ़ायरफ़ॉक्स/3.5। 6 (.NET CLR 3.5.30729)", "भाषा" => "en-us,en;q=0.5"), "आईफोन" => सरणी ("user_agent" => "मोज़िला/5.0 (आईफोन; यू;); Mac OS > "मोज़िला/4.0 (संगत; एमएसआईई 7.0; विंडोज़ एनटी 5.1; जीटीबी6; .NET सीएलआर 2.0.50727)", "भाषा" => "fr,fr-FR;q=0.5"); foreach ($url के रूप में urls) ( echo "URL: $url\n"; foreach ($test_name के रूप में ब्राउज़र्स => $ब्राउज़र) ( $ch = cur_init(); // पता निर्धारित करें cur_setopt($ch, CURLOPT_URL , $url); // उपयोग किए गए ब्राउज़र और भाषा को इंगित करें curl_setopt($ch, CURLOPT_HTTPHEADER, array("उपयोगकर्ता-एजेंट: ($ब्राउज़र["user_agent"])", "स्वीकार-भाषा: ($ब्राउज़र["भाषा" ]) ")); // हमें पृष्ठ की सामग्री की आवश्यकता नहीं है cur_setopt($ch, CURLOPT_NOBODY, 1); // हमें केवल हेडर की आवश्यकता है curl_setopt($ch, CURLOPT_HEADER, 1); // इसके बजाय परिणाम लौटाएं इसके आउटपुट के कर्ल_सेटॉप($ch, CURLOPT_RETURNTRANSFER , 1); $आउटपुट = कर्ल_exec($ch); कर्ल_क्लोज़($ch); // HTTP हेडर में पुनर्निर्देशन को परिभाषित करें? यदि (preg_match("!Location: (.*)!" , $आउटपुट, $माचिस)) ( इको "$test_name: $matches\n" पर रीडायरेक्ट करता है; ) अन्य ( इको "$test_name: नो रीडायरेक्शन\n"; ) ) इको "\n\n"; ) एक लूप में हम प्रत्येक यूआरएल के लिए ब्राउज़र की जांच करते हैं। सबसे पहले हम अपने अनुरोध के लिए विकल्प निर्धारित करते हैं: यूआरएल और ब्राउज़र और परीक्षण की जाने वाली भाषा। क्योंकि हमने एक विशेष विकल्प निर्धारित किया है; अनुरोध के परिणाम में केवल HTTP हेडर होंगे। एक सरल रेगुलर एक्सप्रेशन का उपयोग करके, हम जांच सकते हैं कि प्रतिक्रिया में "स्थान:" स्ट्रिंग है या नहीं। स्क्रिप्ट निष्पादन का परिणाम: यूआरएल: http://www.cnn.com मानक: http://edition.cnn.com/ पर रीडायरेक्ट करता है आईफोन: http://edition.cnn.com/ पर रीडायरेक्ट करता है फ्रेंच: http://edition.cnn पर रीडायरेक्ट करता है .com/ यूआरएल: http://www.mozilla.com मानक: https://www.mozilla.org/firefox/ पर रीडायरेक्ट आईफोन: https://www.mozilla.org/firefox/ पर रीडायरेक्ट फ़्रेंच: पर रीडायरेक्ट https://www.mozilla.org/firefox/ यूआरएल: http://www.facebook.com मानक: https://www.facebook.com/ पर रीडायरेक्ट आईफोन: http://m.facebook.com पर रीडायरेक्ट /?refsrc=http%3A%2F%2Fwww.facebook.com%2F&_rdr फ़्रेंच: कोई पुनर्निर्देशन नहीं GET अनुरोध निष्पादित करते समय, डेटा को क्वेरी स्ट्रिंग में पास किया जा सकता है। उदाहरण के लिए, जब आप Google पर खोजते हैं, तो आपकी क्वेरी का URL में अनुवाद किया जाता है: http://www.google.com/search?q=google इस क्वेरी का परिणाम प्राप्त करने के लिए आपको cURL की भी आवश्यकता नहीं है, आप आलसी हो सकते हैं और "file_get_contents()" का उपयोग कर सकते हैं। लेकिन कुछ HTML फॉर्म POST पद्धति का उपयोग करते हैं। इस मामले में, डेटा यूआरएल के बजाय अनुरोध संदेश के मुख्य भाग में भेजा जाता है। आइए एक स्क्रिप्ट लिखें जो POST अनुरोध भेजेगी। सबसे पहले, आइए एक सरल PHP फ़ाइल बनाएं जो इन अनुरोधों को स्वीकार करेगी और भेजे गए डेटा को वापस कर देगी। चलिए इसे post_output.php कहते हैं: $url = "http://localhost/post_output.php"; $पोस्ट_डेटा = सरणी ("फू" => "बार", "क्वेरी" => "फूबार", "एक्शन" => "सबमिट"); $ch = कर्ल_इनिट(); कर्ल_सेटोप्ट($ch, CURLOPT_URL, $url); कर्ल_सेटोप्ट($ch, CURLOPT_RETURNTRANSFER, 1); // एक पोस्ट अनुरोध बनाएं cur_setopt($ch, CURLOPT_POST, 1); // डेटा जोड़ें cur_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $आउटपुट = कर्ल_एक्सईसी($ch); कर्ल_क्लोज़($ch); प्रतिध्वनि $आउटपुट; यह स्क्रिप्ट आउटपुट करेगी: सरणी (=> बार => FooBar => सबमिट करें) इस स्क्रिप्ट ने post_output.php फ़ाइल में एक POST अनुरोध भेजा। जिसने $_POST सरणी की सामग्री को आउटपुट किया और हमें cURL का उपयोग करके यह प्रतिक्रिया प्राप्त हुई। पिछले उदाहरण की तरह, आइए एक फ़ाइल बनाएं जो अनुरोध स्वीकार करेगी, upload_output.php : Print_r($_FILES); और स्क्रिप्ट ही जो फ़ाइलें डाउनलोड करती है: $url = "http://localhost/upload_output.php"; $post_data = array ("foo" => "bar", // अपलोड करने के लिए फ़ाइल "upload" => "@/tmp/desert.jpg"); $ch = कर्ल_इनिट(); कर्ल_सेटोप्ट($ch, CURLOPT_URL, $url); कर्ल_सेटोप्ट($ch, CURLOPT_RETURNTRANSFER, 1); कर्ल_सेटोप्ट($ch, CURLOPT_POST, 1); कर्ल_सेटॉप ($ch, CURLOPT_POSTFIELDS, $post_data); $आउटपुट = कर्ल_एक्सईसी($ch); कर्ल_क्लोज़($ch); प्रतिध्वनि $आउटपुट; यदि आप कोई फ़ाइल अपलोड करना चाहते हैं, तो आपको बस एक सामान्य POST अनुरोध पैरामीटर की तरह, "@" के साथ उपसर्ग करके, उसके लिए पथ पास करना होगा। स्क्रिप्ट का परिणाम: ऐरे (=>ऐरे (==desert.jpg => एप्लिकेशन/ऑक्टेट-स्ट्रीम => /tmp/phpAhEvXy => 0 => 845941)) PHP में cURL की उन्नत सुविधाओं में से एक एक साथ और अतुल्यकालिक रूप से कई अनुरोधों को निष्पादित करने की क्षमता है। सामान्य परिस्थितियों में, स्क्रिप्ट रुक जाती है और अनुरोध पूरा होने की प्रतीक्षा करती है। और यदि आपको बहुत सारी क्वेरी निष्पादित करने की आवश्यकता है, तो इसमें बहुत समय लग सकता है, क्योंकि... आप क्रमिक रूप से प्रदर्शन करेंगे. इस सीमा को दरकिनार किया जा सकता है: // हैंडलर बनाएं $ch1 = cur_init(); $ch2 = कर्ल_इनिट(); // विकल्प सेट करें cur_setopt($ch1, CURLOPT_URL, "http://lxr.php.net/"); कर्ल_सेटॉप ($ch1, CURLOPT_HEADER, 0); कर्ल_सेटोप्ट($ch2, CURLOPT_URL, "http://www.php.net/"); कर्ल_सेटॉप ($ch2, CURLOPT_HEADER, 0); // एकाधिक कर्ल हैंडल बनाएं $mh = cur_multi_init(); // हैंडलर जोड़ें cur_multi_add_handle($mh,$ch1); कर्ल_मल्टी_एड_हैंडल($mh,$ch2); $चल रहा है = शून्य; // अनुरोध निष्पादित करें (curl_multi_exec($mh, $running); ) जबकि ($running > 0); // संसाधनों को मुक्त करें cur_multi_remove_handle($mh, $ch1); कर्ल_मल्टी_रिमूव_हैंडल($mh, $ch2); कर्ल_मल्टी_क्लोज़($mh); विचार यह है कि आप कई कर्ल हैंडल बना सकते हैं, उन्हें एक मल्टी-हैंडल के तहत जोड़ सकते हैं, और उन्हें अतुल्यकालिक रूप से निष्पादित कर सकते हैं। सबसे पहले, सब कुछ एक नियमित कर्ल अनुरोध के समान है - एक डिस्क्रिप्टर बनाया जाता है ( कर्ल_इनिट()
), पैरामीटर सेट हैं ( कर्ल_सेटॉप()
). इसके बाद, एक मल्टी-डिस्क्रिप्टर बनाया जाता है ( कर्ल_मल्टी_इनिट()
) और पहले से बनाए गए नियमित विवरणक जोड़े गए हैं ( कर्ल_मल्टी_एड_हैंडल()
). सामान्य रूप से cur_exec() को कॉल करने के बजाय, हम कॉल करेंगे कर्ल_मल्टी_एक्सईसी()
यह फ़ंक्शन हमें दूसरे पैरामीटर - $running का उपयोग करके सक्रिय कनेक्शन की संख्या के बारे में सूचित करता है। इसलिए, लूप तब तक चलता है जब तक $running 0 के बराबर नहीं हो जाता। और, निश्चित रूप से, काम खत्म करने के बाद, संसाधनों को जारी करना आवश्यक है। इस उदाहरण में, हम केवल प्रश्नों के परिणाम को STDOUT पर आउटपुट करते हैं। आइए मल्टी कर्ल का उपयोग करने के एक गैर-मामूली मामले पर विचार करें। एक ऐसे ब्लॉग की कल्पना करें जिसमें बहुत सारी पोस्टें हों जिनमें बाहरी साइटों के लिंक हों। हो सकता है कि इनमें से कुछ लिंक काम न करें. आइए एक स्क्रिप्ट लिखें जो सभी टूटे हुए लिंक ढूंढेगी और उन्हें हमें दिखाएगी। सबसे पहले, हमें डेटाबेस से सभी बाहरी लिंक खींचने होंगे: // CONFIG $db_host = "लोकलहोस्ट"; $db_user = "रूट"; $db_pass = ""; $db_name = "वर्डप्रेस"; $excluded_domains = array('localhost', 'site'); $max_connections = 10; $url_list = सरणी(); $working_urls = सारणी(); $dead_urls = सारणी(); $not_found_urls = सारणी(); $सक्रिय = शून्य; // MySQL से कनेक्ट करें यदि (!mysql_connect($db_host, $db_user, $db_pass)) (die('कनेक्ट नहीं हो सका:' . mysql_error()); ) यदि (!mysql_select_db($db_name)) (die('कर सका db का चयन न करें: " . mysql_error()); ) // टेक्स्ट में लिंक के साथ सभी पोस्ट लें $q = "wp_posts से पोस्ट_कंटेंट चुनें जहां पोस्ट_कंटेंट "%href=%" और पोस्ट_स्टेटस = "प्रकाशित करें" और पोस्ट_टाइप = "पोस्ट " "; $r = mysql_query($q) या मरो(mysql_error()); जबकि ($d = mysql_fetch_assoc($r)) ( // रेगुलर एक्सप्रेशन का उपयोग करके सभी लिंक एकत्र करें यदि (preg_match_all("/href=\"(.*?)\"/", $d["post_content"], $matches )) ( foreach ($url के रूप में मेल खाता है) ( // अनावश्यक डोमेन को फ़िल्टर करें $tmp = parse_url($url); यदि (isset($tmp["host"]) && in_array($tmp["host"], $ बहिष्कृत_डोमेन)) (जारी रखें; ) // एक साथ $url_list = $url; ) ) ) // दोहराव हटाएं $url_list = array_values(array_unique($url_list)); यदि (!$url_list) (die('जाँचने के लिए कोई URL नहीं'); ) स्क्रिप्ट के इस भाग में, हम बस डेटाबेस से सभी बाहरी लिंक निकाल देते हैं। आइए उनकी जाँच करें: $mh = कर्ल_मल्टी_इनिट(); // 1. ($i = 0; $i के लिए लिंक जोड़ें< $max_connections; $i++) {
add_url_to_multi_handle($mh, $url_list);
}
// основной цикл
do {
curl_multi_exec($mh, $curRunning);
// 2. один из потоков завершил работу
if ($curRunning != $running) {
$mhinfo = curl_multi_info_read($mh);
if (is_array($mhinfo) && ($ch = $mhinfo["handle"])) {
// 3. один из запросов выполнен, можно получить информацию о нем
$info = curl_getinfo($ch);
// 4. нерабочая ссылка
if (!$info["http_code"]) {
$dead_urls = $info["url"];
// 5. 404?
} else if ($info["http_code"] == 404) {
$not_found_urls = $info["url"];
// 6. верная ссылка
} else {
$working_urls = $info["url"];
}
// 7. удаляем отработавший дескриптор
curl_multi_remove_handle($mh, $mhinfo["handle"]);
curl_close($mhinfo["handle"]);
// 8. добавим новый урл
add_url_to_multi_handle($mh, $url_list);
$running = $curRunning;
}
}
} while ($curRunning >0); कर्ल_मल्टी_क्लोज़($mh); इको "==मृत यूआरएल==\n"; इको इंपोड('\n', $dead_urls)। "\n\n"; इको "==404 यूआरएल==\n"; इको इंपोड('\n', $not_found_urls)। "\n\n"; इको "==कार्यशील यूआरएल==\n"; इको इंपोड('\n', $working_urls); प्रतिध्वनि "\n\n"; // 9. दिए गए URL फ़ंक्शन के साथ एक हैंडल जोड़ता है add_url_to_multi_handle($mh, $url_list) ( स्थिर $index = 0; // यदि अभी भी लिंक हैं यदि (isset($url_list[$index])) ( // सब कुछ हमेशा की तरह $ ch = कर्ल_इनिट (); // सेट विकल्प कर्ल_सेटॉप ($ ch, CURLOPT_URL, $ url_list [$ इंडेक्स]); // परिणाम प्रदर्शित करने के बजाय वापस लौटें कर्ल_सेटॉप ($ ch, CURLOPT_RETURNTRANSFER, 1); // अनुमति दें कर्ल_सेटॉप ($ ch, CURLOPT_FOLLOWLOCATION, 1) को रीडायरेक्ट करता है; // समय बचाने के लिए केवल हेडर प्राप्त करें cur_setopt ($ ch, CURLOPT_NOBODY, 1); // मल्टी-हैंडल में जोड़ें cur_multi_add_handle ($ mh, $ ch); $ इंडेक्स ++; ) ) आइए कोड को अधिक विस्तार से देखें (संख्या कोड में टिप्पणियों से मेल खाती है): आइए स्क्रिप्ट चलाएँ: मृत URL== xample1234.com/ ==404 URL== www.google.com/dsfasdfafd ==कार्यशील URL== ru.php.net/manual/ru/function.time.php www.cssbuttongenerator.com/ csslint. नेट/codex.wordpress.org/Plugin_API/Action_Reference fortawesome.github.io/Font-Awesome/ fortawesome.github.io/Font-Awesome/ www.oracle.com/technetwork/java/javafx/downloads/index.html कोडेक्स। Wordpress.org/Plugin_API/Filter_Reference Codex.wordpress.org/Roles_and_Capability Code.google.com/p/google-api-php-client/wiki/OAuth2#Google_APIs_Console jplayer.org/code.google.com/p/google-api -php-client/ डेवलपर्स.google.com/+/ अकाउंट्स.google.com/ServiceLogin?service=devconsole&passive=1209600&continue=https%3A%2F%2Fcode.google.com%2Fapis%2Fconsole%2F&followup=https%3A%2F %2Fcode.google.com%2Fapis%2Fconsole%2F daneden.github.io/animate.css/ github.com/daneden/animate.css ru2.php.net/manual/ru/function.autoload.php www.google. com/recaptcha/api/verify phpunit.de/phpunit.de/manual/current/en/phpunit-book.html जाँच में लगभग 2 सेकंड का समय लगा। एक साथ 10 थ्रेड चलाने से, नियमित कर्ल अनुरोधों की तुलना में प्रदर्शन 10 गुना बढ़ जाता है। सर्वर प्रतिक्रिया की सामग्री प्राप्त करने के लिए, फ़ंक्शन का उपयोग करें कर्ल_मल्टी_गेटकंटेंट($ch)
, जहां $ch से प्राप्त एक डिस्क्रिप्टर है कर्ल_मल्टी_इन्फो_रीड()
. यदि HTTP अनुरोध को प्रमाणीकरण की आवश्यकता है, तो निम्न कोड का उपयोग करें: $url = "http://www.somesite.com/members/"; $ch = कर्ल_इनिट(); कर्ल_सेटोप्ट($ch, CURLOPT_URL, $url); कर्ल_सेटोप्ट($ch, CURLOPT_RETURNTRANSFER, 1); // उपयोगकर्ता नाम और पासवर्ड भेजें cur_setopt($ch, CURLOPT_USERPWD, "myusername:mypassword"); // यदि रीडायरेक्ट की अनुमति है तो cur_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // पुनर्निर्देशन के बाद कर्ल पासवर्ड भेजेगा cur_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1); $आउटपुट = कर्ल_एक्सईसी($ch); कर्ल_क्लोज़($ch); एफ़टीपी के साथ काम करने के लिए PHP की अपनी लाइब्रेरी है, लेकिन आप cURL का भी उपयोग कर सकते हैं: // फ़ाइल पढ़ें $file = fopen('/path/to/file', 'r'); // यूआरएल में पहले से ही आवश्यक डेटा शामिल है $url = "ftp://username: [ईमेल सुरक्षित]:21/पथ/से/नया/फ़ाइल"; $ch = कर्ल_इनिट(); कर्ल_सेटॉप($ch, CURLOPT_URL, $url); कर्ल_सेटॉप($ch, CURLOPT_RETURNTRANSFER, 1); // विकल्प कर्ल_सेटॉप($ch, CURLOPT_UPLOAD, 1); कर्ल_सेटॉप($ch, CURLOPT_INFILE, $fp); कर्ल_सेटॉप($ch, CURLOPT_INFILESIZE, फ़ाइल आकार("/पथ/से/फ़ाइल")); कर्ल_सेटॉप($ch, CURLOPT_FTPASCII, 1); $आउटपुट = कर्ल_exec($ ch); कर्ल_क्लोज़($ch); अनुरोध एक विशिष्ट प्रॉक्सी के माध्यम से किया जा सकता है: $ch = कर्ल_इनिट(); कर्ल_सेटॉप्ट($ch, CURLOPT_URL,"http://www.example.com"); कर्ल_सेटोप्ट($ch, CURLOPT_RETURNTRANSFER, 1); // प्रॉक्सी पता cur_setopt($ch, CURLOPT_PROXY, "11.11.11.11:8080"); // यदि प्राधिकरण आवश्यक है तो cur_setopt($ch, CURLOPT_PROXYUSERPWD,"user:pass"); $आउटपुट = कर्ल_एक्सईसी($ch); कर्ल_क्लोज़($ch); अनुरोध चलने के दौरान, इसके पूरा होने की प्रतीक्षा किए बिना, कॉलबैक का उपयोग करना संभव है। उदाहरण के लिए, जब सर्वर प्रतिक्रिया डाउनलोड की जा रही है, तो हम पूर्ण डाउनलोड की प्रतीक्षा किए बिना पहले से प्राप्त डेटा का उपयोग कर सकते हैं। $ch = कर्ल_इनिट(); कर्ल_सेटॉप्ट($ch, CURLOPT_URL,"http://example.com"); कर्ल_सेटॉप्ट($ch, CURLOPT_WRITEFUNCTION,"progress_function"); कर्ल_एक्सईसी($ch); कर्ल_क्लोज़($ch); फ़ंक्शन प्रगति_फ़ंक्शन($ch,$str) ( इको $str; रिटर्न स्ट्रलेन($str); ) अनुरोध के सही ढंग से काम करने के लिए कॉलबैक फ़ंक्शन को स्ट्रिंग की लंबाई लौटानी होगी। हर बार सर्वर प्रतिक्रिया का अगला भाग प्राप्त होने पर कॉलबैक कॉल किया जाएगा। इस लेख में, हमने PHP में cURL की उन्नत सुविधाओं को देखा। अगली बार जब आपको यूआरएल अनुरोध करने की आवश्यकता हो, तो कर्ल का उपयोग करें। हमें अक्सर इंटरनेट से विभिन्न फ़ाइलें डाउनलोड करनी पड़ती हैं, उदाहरण के लिए, निष्पादन योग्य प्रोग्राम फ़ाइलें, स्क्रिप्ट फ़ाइलें, स्रोत पुरालेख। लेकिन यह हमेशा ब्राउज़र के माध्यम से करने की आवश्यकता नहीं है. कई स्थितियों में टर्मिनल के माध्यम से सभी कार्य करना बहुत आसान होता है। क्योंकि इस तरह आप प्रक्रिया को स्वचालित कर सकते हैं। दूसरी ओर, वेबमास्टरों को समय-समय पर वेबसाइट की पहुंच का परीक्षण करना, भेजे गए और प्राप्त हेडर की जांच करना और भी बहुत कुछ करना पड़ता है। ऐसी समस्याओं और समान श्रेणी की समस्याओं को हल करने के लिए, आप कर्ल उपयोगिता का उपयोग कर सकते हैं। यह आपको समस्याओं की एक विस्तृत श्रृंखला को हल करने की अनुमति देता है, जिसमें साइट पर उपयोगकर्ता क्रियाओं का अनुकरण भी शामिल है। इस लेख में हम देखेंगे कि कर्ल का उपयोग कैसे करें, यह क्या है और इस कार्यक्रम की आवश्यकता क्यों है। वास्तव में, कर्ल लिनक्स या विंडोज के लिए सिर्फ एक कमांड लाइन उपयोगिता से कहीं अधिक है। यह पुस्तकालयों का एक समूह है जो यूआरएल पृष्ठों के साथ काम करने और फ़ाइलों को स्थानांतरित करने की बुनियादी क्षमताओं को लागू करता है। लाइब्रेरी प्रोटोकॉल के साथ काम करने का समर्थन करती है: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, टेलनेट, DICT, LDAP, साथ ही POP3, IMAP और SMTP। यह पृष्ठों पर उपयोगकर्ता क्रियाओं और यूआरएल के साथ अन्य परिचालनों का अनुकरण करने के लिए बहुत अच्छा है। कर्ल लाइब्रेरी के लिए समर्थन कई अलग-अलग प्रोग्रामिंग भाषाओं और प्लेटफार्मों में जोड़ा गया है। कर्ल उपयोगिता इस लाइब्रेरी के लिए एक स्वतंत्र आवरण है। यह वह उपयोगिता है जिस पर हम इस लेख में ध्यान केंद्रित करेंगे। कर्ल लिनक्स कमांड का उपयोग कैसे किया जा सकता है, इसके विवरण पर आगे बढ़ने से पहले, आइए स्वयं उपयोगिता और इसके मुख्य विकल्पों को देखें जिनकी हमें आवश्यकता होगी। उपयोगिता का सिंटैक्स बहुत सरल है: $ कर्ल विकल्प लिंक आइए अब मुख्य विकल्पों पर नजर डालते हैं: यह किसी भी तरह से कर्ल लिनक्स के लिए सभी विकल्प नहीं है, लेकिन यह उन बुनियादी बातों को सूचीबद्ध करता है जिनका आपको उपयोग करने की आवश्यकता होगी। हमने कर्ल उपयोगिता के साथ काम करने के सिद्धांत से संबंधित हर चीज को कवर कर लिया है, अब अभ्यास करने और कर्ल कमांड के उदाहरणों को देखने का समय आ गया है। सबसे आम काम यही है. फ़ाइल डाउनलोड करना बहुत सरल है. ऐसा करने के लिए, बस पैरामीटर में उपयोगिता के लिए फ़ाइल नाम या html पृष्ठ पास करें: कर्ल https://raw.githubusercontent.com/curl/curl/master/README.md लेकिन यहां एक आश्चर्य आपका इंतजार कर रहा है: फ़ाइल की संपूर्ण सामग्री मानक आउटपुट पर भेजी जाएगी। इसे किसी भी फ़ाइल में लिखने के लिए उपयोग करें: कर्ल -o readme.txt https://raw.githubusercontent.com/curl/curl/master/README.md और यदि आप चाहते हैं कि परिणामी फ़ाइल का नाम सर्वर पर मौजूद फ़ाइल के समान हो, तो -O विकल्प का उपयोग करें: कर्ल -O https://raw.githubusercontent.com/curl/curl/master/README.md कर्ल -# -सी - -ओ https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz यदि आवश्यक हो, तो आप एक कमांड से कई फ़ाइलें डाउनलोड कर सकते हैं: कर्ल -O https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README एक और चीज़ जो प्रशासक के लिए उपयोगी हो सकती है वह यह है कि किसी फ़ाइल को केवल तभी डाउनलोड किया जाए जब उसे संशोधित किया गया हो: कर्ल -ज़ 21-दिसंबर-17 https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README आप -Y विकल्प का उपयोग करके डाउनलोड गति को आवश्यक सीमा तक सीमित कर सकते हैं ताकि नेटवर्क पर अधिभार न पड़े: कर्ल -- सीमा-दर 50K -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz यहां आपको प्रति सेकंड किलोबाइट की संख्या निर्दिष्ट करनी होगी जिसे डाउनलोड किया जा सकता है। यदि गति पर्याप्त नहीं है तो आप कनेक्शन समाप्त भी कर सकते हैं, ऐसा करने के लिए -Y विकल्प का उपयोग करें: कर्ल -वाई 100 -ओ https://raw.githubusercontent.com/curl/curl/master/README.md कर्ल -टी लॉगिन.txt ftp://speedtest.tele2.net/upload/ या आइए जांचें कि फ़ाइल HTTP के माध्यम से भेजी गई है; इसके लिए एक विशेष सेवा है: कर्ल -T ~/login.txt http://posttestserver.com/post.php प्रतिक्रिया में, उपयोगिता आपको बताएगी कि आप डाउनलोड की गई फ़ाइल कहां पा सकते हैं। आप POST पद्धति का उपयोग करके न केवल फ़ाइलें, बल्कि कोई भी डेटा भी भेज सकते हैं। आपको याद दिला दूं कि इस पद्धति का उपयोग विभिन्न रूपों का डेटा भेजने के लिए किया जाता है। ऐसा अनुरोध भेजने के लिए -d विकल्प का उपयोग करें। परीक्षण के लिए हम उसी सेवा का उपयोग करेंगे: कर्ल -डी "फ़ील्ड1=वैल&फ़ाइलल्ड2=वैल1"http://posttestserver.com/post.php यदि आप इस सबमिशन विकल्प से खुश नहीं हैं, तो आप फॉर्म सबमिट करने का नाटक कर सकते हैं। इसके लिए एक विकल्प है -F: कर्ल -एफ "पासवर्ड=@पास;टाइप=टेक्स्ट/प्लेन" http://posttestserver.com/post.php यहां हम फॉर्म के साथ पासवर्ड फ़ील्ड को सादे टेक्स्ट के रूप में पास करते हैं, उसी तरह आप कई पैरामीटर पास कर सकते हैं। कुकीज़ का उपयोग वेबसाइटों द्वारा उपयोगकर्ता की ओर से कुछ जानकारी संग्रहीत करने के लिए किया जाता है। उदाहरण के लिए, प्रमाणीकरण के लिए यह आवश्यक हो सकता है। आप कर्ल का उपयोग करके कुकीज़ भेज और प्राप्त कर सकते हैं। प्राप्त कुकीज़ को फ़ाइल में सहेजने के लिए, -c विकल्प का उपयोग करें: कर्ल -सी कुकी.txt http://posttestserver.com/post.php फिर आप कर्ल कुकी को वापस भेज सकते हैं: कर्ल -बी कुकी.txt http://posttestserver.com/post.php हमें हमेशा पृष्ठ की सामग्री की आवश्यकता नहीं होती है। कभी-कभी केवल सुर्खियाँ ही दिलचस्प हो सकती हैं। केवल उन्हें प्रदर्शित करने के लिए -I विकल्प है: कर्ल -I https://site और -H विकल्प आपको सर्वर पर कई या अधिक भेजने की अनुमति देता है, उदाहरण के लिए, आप यदि-संशोधित-चूंकि हेडर पास कर सकते हैं ताकि पृष्ठ केवल तभी लौटाया जाए जब इसे संशोधित किया गया हो: यदि सर्वर को HTTP बेसिक या FTP जैसे सामान्य प्रकार के प्रमाणीकरण में से एक की आवश्यकता होती है, तो कर्ल इस कार्य को बहुत आसानी से संभाल सकता है। प्रमाणीकरण विवरण निर्दिष्ट करने के लिए, बस उन्हें -u विकल्प में एक कोलन द्वारा अलग करके निर्दिष्ट करें: कर्ल -यू ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt HTTP सर्वर पर प्रमाणीकरण उसी तरह से किया जाएगा। यदि आपको फ़ाइलें डाउनलोड करने के लिए प्रॉक्सी सर्वर का उपयोग करने की आवश्यकता है, तो यह भी बहुत आसान है। -x विकल्प में प्रॉक्सी सर्वर पता निर्दिष्ट करना पर्याप्त है: कर्ल -x proxysever.test.com:3128 http://google.co.in इस लेख में, हमने देखा कि कर्ल का उपयोग कैसे करें, इस उपयोगिता की आवश्यकता क्यों है और इसकी मुख्य क्षमताएं क्या हैं। समानता के बावजूद, वे बहुत अलग हैं। कर्ल लिनक्स कमांड को सर्वर पर विभिन्न क्रियाओं का विश्लेषण और अनुकरण करने के लिए अधिक डिज़ाइन किया गया है, जबकि wget फ़ाइलों को डाउनलोड करने और साइटों को क्रॉल करने के लिए अधिक उपयुक्त है। यह आलेख cURL जैसे शक्तिशाली टूल के साथ-साथ PHP के लिए लाइब्रेरी के बारे में बात करेगा जो इस टूल - libcurl तक पहुंच प्रदान करता है। यह सब किस लिए है? डेटा ट्रांसफर प्रोटोकॉल का उपयोग करके सर्वर के साथ संचार करना, उदाहरण के लिए, http या ftp। बाकी प्रोटोकॉल हमारे लिए विशेष रूप से दिलचस्प नहीं हैं; यदि कोई इस विषय में गहराई से जाना चाहता है, तो उसे अंग्रेजी भाषा के संसाधनों को खोदना होगा, और इस लेख में मूल बातें और उपयोग के उदाहरण शामिल होंगे। तो, libcurl लाइब्रेरी हमें सर्वर पर डेटा संचारित करने और उससे प्रतिक्रिया प्राप्त करने की क्षमता प्रदान करती है। यह हमें क्या देता है? उपयोगकर्ता के व्यवहार का अनुकरण करने की क्षमता या ! आप बाद के विश्लेषण के लिए पृष्ठों की सामग्री प्राप्त कर सकते हैं, आप सेवा प्रतिक्रिया हेडर प्राप्त कर सकते हैं और प्रोग्रामेटिक रूप से साइटों पर लॉग इन कर सकते हैं, संदेश पोस्ट करने के लिए स्क्रिप्ट बना सकते हैं (उदाहरण के लिए, ट्विटर पर या मंचों पर) या जानकारी। सब कुछ केवल आपकी कल्पना तक ही सीमित है! पहली चीज़ जो हमें करनी है वह है लाइब्रेरी स्थापित करना। अपने स्थानीय कंप्यूटर पर मैं अधिकांश नौसिखिया वेबमास्टरों की तरह डेनवर बिल्ड का उपयोग करता हूं, जिनके लिए यह लेख अभिप्रेत है। अनुभवी उपयोगकर्ता जो स्वतंत्र रूप से php+apache+mysql संयोजन स्थापित करते हैं, वे cURL स्थापित करने में सक्षम होंगे, यह मेरे लिए नहीं है कि मैं उन्हें समझाऊं कि यह कैसे किया जाता है;) और हम, शुरुआती, इसे आसान बनाने के लिए तैयार समाधानों का उपयोग करते हैं। इसलिए, libcurl को इस प्रकार स्थापित करें: और पदों की शुरुआत में अर्धविराम हटा दें: ;एक्सटेंशन=php_curl.dll तैयार। लाइब्रेरी की कार्यक्षमता जांचने के लिए, आप phpinfo() फ़ंक्शन को कॉल कर सकते हैं और वहां लाइन ढूंढ सकते हैं: cURL समर्थन सक्षम। आपकी पहली जीत पर बधाई. टूल के साथ काम शुरू करने के लिए इसे इनिशियलाइज़ करना होगा। यह अग्रानुसार होगा: $ch = कर्ल_इनिट(); हमने कर्ल सत्र आरंभीकरण फ़ंक्शन का उपयोग किया। इस मामले में, आप यूआरएल को तुरंत इस तरह सेट कर सकते हैं: $ch = कर्ल_इनिट("https://site"); और आप इसे बाद में, विकल्पों में कर सकते हैं। विकल्पों को स्थापित करने का क्रम कोई मायने नहीं रखता। यह किसी अन्य फ़ंक्शन द्वारा किया जाता है: कर्ल_सेटॉप्ट (संसाधन सीएच, स्ट्रिंग विकल्प, मिश्रित मूल्य) हमने इस फ़ंक्शन का पहला पैरामीटर पहले ही बना लिया है, अर्थात, संसाधन ch, ठीक ऊपर, लेकिन बहुत सारे विकल्प और मान पैरामीटर हैं। मुझे लगता है कि आपको उन सभी को यहां कॉपी-पेस्ट नहीं करना चाहिए, बल्कि केवल फ़ंक्शन के विस्तृत विवरण के लिए एक लिंक देना चाहिए, मुझे आशा है कि कोई भी नाराज नहीं होगा: कर्ल_सेटॉप्ट। मैं उदाहरण के तौर पर URL का उपयोग करके सेटिंग विकल्प का एक उदाहरण दूंगा: $url = "https://site"; कर्ल_सेटॉप्ट($ch, CURLOPT_URL,$url); सेटिंग विकल्पों के कुछ और उदाहरण: आइए, पृष्ठ प्राप्त किए बिना, सर्वर प्रतिक्रिया शीर्षलेख प्राप्त करें: कर्ल_सेटॉप ($ch, CURLOPT_HEADER, 1); // हेडर पढ़ें cur_setopt($ch, CURLOPT_NOBODY, 1); // मुख्य भाग के बिना केवल हेडर पढ़ें इसलिए, हमने सत्र प्रारंभ कर दिया है, हमें आवश्यक पैरामीटर सेट कर दिए हैं, अब हम परिणामी अनुरोध निष्पादित करते हैं, सत्र बंद करते हैं और परिणाम प्रदर्शित करते हैं: $परिणाम = कर्ल_एक्सईसी($ch); कर्ल_क्लोज़($ch); प्रतिध्वनि $परिणाम; परिणामस्वरूप, हमें libcurl लाइब्रेरी का उपयोग करने का पहला पूर्णतः कार्यशील उदाहरण मिलता है: $ch = कर्ल_इनिट(); $url = "https://site"; कर्ल_सेटॉप्ट($ch, CURLOPT_URL,$url); कर्ल_सेटोप्ट($ch, CURLOPT_HEADER, 1); // हेडर पढ़ें cur_setopt($ch, CURLOPT_NOBODY, 1); // मुख्य भाग के बिना केवल हेडर पढ़ें $result = cur_exec($ch); कर्ल_क्लोज़($ch); प्रतिध्वनि $परिणाम; मुझे आशा है कि यह कैसे काम करता है, यह स्पष्ट है, क्योंकि हमने प्रत्येक चरण को अलग से देखा :) परिणामस्वरूप, हमें सर्वर से एक HTTP प्रतिक्रिया हेडर प्राप्त होता है, जिसके बीच बातचीत के सभी चरणों को बेहतर ढंग से समझने के लिए हम निश्चित रूप से नीचे विश्लेषण करेंगे। ब्राउज़र और सर्वर: HTTP/1.1 200 ओके सर्वर: nginx/1.2..php 1 आश्चर्यजनक! हमने सर्वर से प्रतिक्रिया हेडर प्राप्त किया और कार्रवाई में लाइब्रेरी का परीक्षण किया। यह हमारे लिए किस प्रकार उपयोगी है? क्योंकि अब आप कर्ल के साथ काम करते समय क्रियाओं के क्रम की मोटे तौर पर कल्पना कर सकते हैं: उदाहरण के लिए, मैंने ya.ru पृष्ठ की ओर रुख किया और उत्पन्न ब्राउज़र अनुरोध और सर्वर से प्राप्त प्रतिक्रिया को देखा। वे यहाँ हैं: मेरा मानना है कि जब कुछ सामान्य बिंदु पहले से ही स्पष्ट हैं और सब कुछ स्पष्ट प्रतीत होता है, तो अभ्यास के लिए आगे बढ़ने और उदाहरण का उपयोग करके अपने कौशल को निखारने का समय आ गया है। व्यक्तिगत रूप से, मेरे हाथ हमेशा व्यवहार में सब कुछ आज़माने के लिए उत्सुक रहते हैं :) चूंकि कर्ल पार्सर्स के लिए बहुत अच्छा है, आइए पेज कोड को उसके पते से प्राप्त करने के कार्य पर विचार करें। इस मामले में, यदि कुछ गलत होता है तो आउटपुट शीर्षक, पृष्ठ सामग्री और यहां तक कि त्रुटि कोड के साथ एक सरणी होगी। फ़ंक्शन get_web_page($url) ($uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14"; $ch = cur_init($url); cur_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // वेब पेज कर्ल_सेटॉप्ट ($ch, CURLOPT_HEADER, 0) लौटाता है; // हेडर कर्ल_सेटॉप ($ch, CURLOPT_FOLLOWLOCATION, 1) नहीं लौटाता; // कर्ल_सेटॉप्ट ($ch, CURLOPT_ENCODING, "" को रीडायरेक्ट करता है); // प्रक्रियाएं सभी एन्कोडिंग कर्ल_सेटॉप्ट($ch, CURLOPT_USERAGENT, $uagent); // यूजरएजेंट कर्ल_सेटॉप($ch, CURLOPT_CONNECTTIMEOUT, 120); // कनेक्शन टाइमआउट कर्ल_सेटॉप($ch, CURLOPT_TIMEOUT, 120); // रिस्पॉन्स टाइमआउट कर्ल_सेटॉप($ch, CURLOPT_MAXREDIRS) , 10) ch); $header["errno"] = $err; $header["errmsg"] = $errmsg; $header["content"] = $content; return $header; ) इनपुट पैरामीटर: उदाहरण के लिए, हम फ़ंक्शन का उपयोग इस प्रकार करते हैं: $परिणाम = get_web_page("https://ya.ru"); अगर (($परिणाम["errno"] != 0)||($परिणाम["http_code"] != 200)) ( echo $result["errmsg"]; ) अन्यथा ( $पेज = $परिणाम["सामग्री "]; प्रतिध्वनि $पेज; ) सब कुछ त्रुटियों के बिना होना चाहिए और आपको $page वेरिएबल में पेज कोड प्राप्त होगा। यदि हम अस्तित्वहीन पृष्ठ yaaaaaaa.ru को प्राप्त करने का प्रयास करते हैं, तो हमें त्रुटि मिलेगी: होस्ट का समाधान नहीं हो सका: yaaaaaa.ru; मेज़बान नहीं मिला सब कुछ सही ढंग से और खूबसूरती से संसाधित किया गया है :) आपके ब्राउज़र में जावास्क्रिप्ट अवरुद्ध है. कृपया साइट को कार्यशील बनाने के लिए जावास्क्रिप्ट सक्षम करें! PHP libcurl का समर्थन करता है, जो डैनियल स्टेनबर्ग द्वारा बनाई गई एक लाइब्रेरी है जो आपको विभिन्न प्रकार के सर्वर और प्रोटोकॉल से जुड़ने की अनुमति देती है। ये फ़ंक्शन PHP 4.0.2 में पेश किए गए थे। कर्ल_इनिट - एक कर्ल सत्र प्रारंभ करता है। संसाधन कर्ल_इनिट() समारोह कर्ल_इनिट()एक नया सत्र आरंभ करता है और , और फ़ंक्शंस में उपयोग के लिए एक CURL हैंडल लौटाता है। यदि वैकल्पिक पैरामीटर यूआरएलप्रदान किया गया है, तो CURLOPT_URL विकल्प इस पैरामीटर का मान प्राप्त करेगा। आप इसे का उपयोग करके मैन्युअल रूप से इंस्टॉल कर सकते हैं। कर्ल_सेटॉप्ट - कर्ल ट्रांसफर/ट्रांसफर के लिए विकल्प सेट करता है। बूल कर्ल_सेटॉप(संसाधन सीएच, स्ट्रिंग विकल्प, मिश्रित मूल्य) समारोह कर्ल_सेटॉप()पैरामीटर द्वारा पहचाने गए CURL सत्र के लिए विकल्प सेट करता है चौधरी. पैरामीटर विकल्पवह विकल्प है जिसे आप सेट करना चाहते हैं, और कीमतयह विकल्प मान है विकल्प . पैरामीटर कीमतनिम्नलिखित विकल्पों के लिए लंबा होना चाहिए (पैरामीटर द्वारा निर्दिष्ट)। विकल्प): पैरामीटर कीमतनिम्नलिखित पैरामीटर मानों के लिए एक स्ट्रिंग होनी चाहिए विकल्प : निम्नलिखित विकल्प एक फ़ाइल डिस्क्रिप्टर की अपेक्षा करते हैं, जो फ़ंक्शन का उपयोग करके प्राप्त किया जाता है fopen() : पैरामीटर कीमत लंबा राइट_कॉलबैक (संसाधन सीएच, स्ट्रिंग डेटा)(... रिटर्न स्ट्रलेन($डेटा);) विकल्प : पैरामीटर कीमतनिम्न प्रपत्र का एक फ़ंक्शन होना चाहिए स्ट्रिंग read_callback (संसाधन ch, संसाधन fd, लंबी लंबाई)()निम्नलिखित पैरामीटर मानों के लिए विकल्प : कर्ल_एक्सईसी - एक कर्ल सत्र निष्पादित करता है। बूल कर्ल_एक्सईसी(संसाधन सीएच) आपके द्वारा CURL सत्र आरंभ करने के बाद इस फ़ंक्शन को कॉल किया जाना चाहिए और उस सत्र के लिए सभी विकल्प पहले ही सेट किए जा चुके हैं। इसका उद्देश्य बस एक पूर्वनिर्धारित कर्ल सत्र (पैरामीटर में निर्दिष्ट) निष्पादित करना है चौधरी). कर्ल_क्लोज़ - कर्ल सत्र बंद करता है। खालीपन कर्ल_बंद करें(संसाधन सीएच) यह फ़ंक्शन CURL सत्र को बंद कर देता है और सभी संसाधनों को रिलीज़ कर देता है। कर्ल हैंडल चौधरीभी हटा दिया गया है. कर्ल_एरनो - अंतिम त्रुटि संख्या वाला पूर्णांक लौटाता है। यदि आपको POST अनुरोध में एक बहुआयामी सरणी और एक फ़ाइल भेजने की आवश्यकता है, तो आपको एक अघुलनशील समस्या का सामना करना पड़ेगा। यदि आप CURLOPT_POSTFIELDS के लिए एक बहुआयामी सरणी पास करते हैं, तो दूसरा स्तर स्ट्रिंग "ऐरे" के रूप में पारित किया जाएगा। यदि आप http_build_query का उपयोग करके कनवर्ट करते हैं, तो आप फ़ाइल को स्थानांतरित नहीं कर पाएंगे। नीचे कर्ल के लिए फ़ाइल लोडिंग के साथ दो-आयामी सरणी एन्कोडिंग के लिए एक फ़ंक्शन है, जो PHP 5.3, PHP 5.4 और PHP 5.6 के दोनों पुराने संस्करणों में काम करेगा। /** जटिल अनुक्रमणिका का उपयोग करके एक बहु-आयामी सरणी को एक-आयामी सरणी में परिवर्तित करता है और कर्ल में उपयोग के लिए उपसर्ग में @ को कर्लफ़ाइल से बदल देता है * @param $inputArray * @param string $inputKey * @return array $requestVars = array ("आईडी" => सरणी(1, 2,"आईडी"=>1234), "नाम" => "लॉग", "लॉगफ़ाइल" => "@/tmp/test.log"); हमें मिलता है: ["आईडी"]=> पूर्णांक(1) ["आईडी"]=> पूर्णांक(2) ["आईडी"]=> पूर्णांक(1234) ["नाम"]=> स्ट्रिंग(3) "लॉग" ["लॉगफ़ाइल"]=> स्ट्रिंग(13) "/tmp/test.log") */ function ConvertToStringArray($inputArray, $inputKey='') ( $resultArray=; foreach ($inputArray as $key => $value ) ( $tmpKey = (बूल)$inputKey ? $inputKey."[$key]" : $key; if (is_array($value)) ( $resultArray+=convertToStringArray($value, $tmpKey); ) अन्यथा ($value = = "@")( $resultArray[$tmpKey] = (class_exists(" CURLFile ", false)) ? नया कर्लफाइल(ltrim($value, "@")) : $value; ) अन्यथा ( $resultArray[$tmpKey ] = $मूल्य; ) ) रिटर्न $resultArray; ) // चेक $requestVars = array("id" => array(1, 2,"id"=>1234), "नाम" => "लॉग", "लॉगफ़ाइल " => "@/tmp/test.log"); $ch = कर्ल_इनिट(); कर्ल_सेटॉप्ट($ch, CURLOPT_URL, "साइट"); कर्ल_सेटोप्ट($ch, CURLOPT_POST, 1); कर्ल_सेटॉप्ट($ch, CURLOPT_POSTFIELDS, ConvertToStringArray($requestVars)); $res = कर्ल_exec($ch); कर्ल_क्लोज़($ch); कर्ल का उपयोग करने के अनुप्रयोग उदाहरण
$ch = कर्ल_इनिट();
print_r($_POST);
print_r($_FILES);
*/
कर्ल_सेटोप्ट($ch, CURLOPT_POST, 1);
कर्ल_सेटोप्ट($ch, CURLOPT_POSTFIELDS, $डेटा);
?>
टिप्पणियाँ
कर्ल क्यों?
कर्ल मूल बातें
// 1. आरंभीकरण $ch = cur_init(); // 2. सेट विकल्प, जिसमें URL cur_setopt($ch, CURLOPT_URL, "http://www.google.com"); कर्ल_सेटोप्ट($ch, CURLOPT_RETURNTRANSFER, 1); कर्ल_सेटॉप ($ch, CURLOPT_HEADER, 0); // 3. अनुरोध निष्पादित करना और प्रतिक्रिया प्राप्त करना $output = cur_exec($ch); // 4. सफाई संसाधन कर्ल_क्लोज़($ch); बस पर नज़र रखना
किसी अनुरोध के बारे में जानकारी प्राप्त करना
ब्राउज़र के आधार पर ट्रैकिंग को पुनर्निर्देशित करें
POST अनुरोध भेजा जा रहा है
फ़ाइलें अपलोड हो रही हैं
मल्टी कर्ल
वर्डप्रेस में बाहरी लिंक की जाँच करना
PHP में अन्य कर्ल सुविधाएँ
HTTP प्रमाणीकरण
एफ़टीपी के माध्यम से अपलोड करें
प्रॉक्सी का उपयोग करना
कॉलबैक फ़ंक्शन
निष्कर्ष
कर्ल कमांड
कर्ल का उपयोग कैसे करें?
गति सीमा
फ़ाइलें स्थानांतरित करना
POST डेटा भेजा जा रहा है
कुकीज़ भेजना और प्राप्त करना
हेडर ट्रांसमिशन और विश्लेषण
कर्ल प्रमाणीकरण
प्रॉक्सी का उपयोग करना
निष्कर्ष
वास्तव में cURL और libcurl क्या हैं? सामान्य बिंदु
डेनवर (डेनवर) पर कर्ल स्थापित करना। libcurl का उपयोग कैसे शुरू करें?
कर्ल और पहले चरणों का विवरण
HTTP अनुरोध हेडर संरचना
अनुरोध
GET / HTTP/1.1 - हम पृष्ठ को / पर प्राप्त करने का प्रयास कर रहे हैं, अर्थात, फ़ोल्डर के मूल में स्थित मुख्य पृष्ठ। हम प्रोटोकॉल संस्करण 1.1 का उपयोग करते हैं।
उपयोगकर्ता-एजेंट: ओपेरा/9.80 (विंडोज एनटी 6.1; WOW64) प्रेस्टो/2.12.388 संस्करण/12.14— हम अपना परिचय सर्वर से कराते हैं, हम ओपेरा ब्राउज़र हैं।
होस्ट: ya.ru - अनुरोधित संसाधन का डोमेन नाम।
स्वीकार करें: टेक्स्ट/एचटीएमएल, एप्लीकेशन/एक्सएमएल;क्यू=0.9, एप्लीकेशन/एक्सएचटीएमएल+एक्सएमएल, इमेज/पीएनजी, इमेज/वेबपी, इमेज/जेपीईजी, इमेज/जीआईएफ, इमेज/एक्स-एक्सबिटमैप, */*;क्यू=0.1- स्वीकार्य संसाधन प्रारूपों की सूची।
स्वीकार-भाषा: ru-RU,ru;q=0.9,en;q=0.8- समर्थित भाषाओं की सूची.
स्वीकार-एन्कोडिंग: gzip, डिफ्लेट- समर्थित एन्कोडिंग विधियाँ।
कुकी: yandexuid=ХХХХХ - कुकीज़, यदि आवश्यक हो।
कनेक्शन: जीवित रखें - कृपया कनेक्शन न तोड़ें और संपर्क में बने रहें।
उत्तर
HTTP/1.1 200 ठीक है - हमें कोड 200 के साथ एक प्रतिक्रिया मिलती है, जिसका मतलब है कि सब कुछ ठीक है।
सर्वर: nginx - सर्वर ने अपना परिचय दिया - यह nginx है।
दिनांक: रविवार, 10 मार्च 2013 14:10:50 जीएमटी- सर्वर पर वर्तमान दिनांक और समय।
सामग्री-प्रकार: टेक्स्ट/एचटीएमएल; वर्णसेट=यूटीएफ-8-सामग्री प्रकार और एन्कोडिंग.
कनेक्शन: बंद करें - सर्वर हमारे साथ स्थायी कनेक्शन नहीं रखना चाहता, इसलिए वह इसे तुरंत बंद कर देता है। अगले अनुरोध के लिए एक नया कनेक्शन स्थापित किया जाएगा।
कैश-नियंत्रण: नो-कैश, नो-स्टोर, अधिकतम-आयु = 0, पुनः सत्यापित करना होगा- कैशिंग प्रबंधन. इस स्थिति में यह अक्षम है.
समाप्ति: रविवार, 10 मार्च 2013 14:10:50 जीएमटी- सत्र की अपेक्षित समाप्ति की तिथि। हमारे मामले में, यह शुरुआती समय के साथ मेल खाता है, क्योंकि प्रसंस्करण के तुरंत बाद सर्वर ने इसे तुरंत बंद कर दिया।
अंतिम-संशोधित: रविवार, 10 मार्च 2013 14:10:50 GMT- अंतिम संशोधन का समय.
सामग्री-एन्कोडिंग: gzip - जानकारी एन्कोडिंग की विधि।
HTTP अनुरोध हेडर में पाए जाने वाले सभी मापदंडों की पूरी सूची विकिपीडिया पर पाई जा सकती है।
अब आपको अंदाजा हो गया है कि आपका ब्राउज़र और वेब सर्वर एक दूसरे से कैसे संवाद करते हैं। यह जानना और समझना बहुत उपयोगी है, क्योंकि हम libcurl लाइब्रेरी का उपयोग करके ब्राउज़र क्रियाओं का अनुकरण करने का प्रयास करेंगे। आगे बढ़ो।पुस्तकालय के साथ काम करने का उदाहरण
यूआरएल - पेज या साइट का पता.
आउटपुट पैरामीटर मान (तीन तत्वों वाली सरणी):
हेडर['errno'] - अगर कुछ गलत हुआ, तो यहां एक त्रुटि कोड होगा।
हेडर['errmsg'] - त्रुटि टेक्स्ट यहां दिखाई देगा।
शीर्षलेख['सामग्री'] - वास्तविक पृष्ठ\फ़ाइल\छवि, आदि।
फिर आप पेज कोड के साथ जो चाहें कर सकते हैं, उदाहरण के लिए, इसे रेगुलर एक्सप्रेशन के साथ पार्स करना। लेकिन यह सब अगले पाठों में है, लेकिन अभी यहीं रुकते हैं।कर्ल
libcurl वर्तमान में http, https, ftp, गोफर, टेलनेट, dict, फ़ाइल और ldap प्रोटोकॉल का समर्थन करता है।
libcurl HTTPS प्रमाणपत्र, HTTP POST, HTTP PUT, FTP अपलोड (यह ftp PHP एक्सटेंशन के साथ भी किया जा सकता है), HTTP फॉर्म-आधारित अपलोड, प्रॉक्सी, कुकीज़ और उपयोगकर्ता + पासवर्ड प्रमाणीकरण का भी समर्थन करता है।कर्ल_इनिट
विवरण
कर्ल_सेटॉप
विवरण
कर्ल_एक्सईसी
विवरण
कर्ल_बंद करें
विवरण
कर्ल_एरनो
विवरण
उदाहरण 1: एक नया कर्ल सत्र प्रारंभ करना और एक वेब पेज पुनर्प्राप्त करना।
उदाहरण 2: example.com प्राप्त करने के लिए PHP के CURL मॉड्यूल का उपयोग करना
उदाहरण 3: PHP के कर्ल का उपयोग करके यूआरएल पहुंच की जांच करना
उदाहरण 4: PHP के CURL का उपयोग करके हेडर को मुख्य भाग से अलग करना
उदाहरण 5: PHP के कर्ल का उपयोग करके एक रेफरल यूआरएल निर्धारित करना
समस्या: cur_setopt($ch,FOLLOW_LOCATION,1); त्रुटि: समाधान open_आधारित और सुरक्षित_मोड के साथ समस्या: एक फ़ंक्शन पहले से ही किसी व्यक्ति द्वारा समाधान n 2 विकसित किया गया है: वही फ़ंक्शन, संशोधित, मेरे लिए बहुत अच्छा काम करता है।= $curl_max_loops) ($curl_loops = 0; गलत वापसी; ) कर्ल_setopt($ch, CURLOPT_HEADER, सत्य); कर्ल_सेटोप्ट($ch, CURLOPT_RETURNTRANSFER, सत्य); $डेटा = कर्ल_एक्सईसी($ch); सूची($हेडर, $डेटा) = विस्फोट('\n\n', $डेटा, 2); $http_code = cur_getinfo($ch, CURLINFO_HTTP_CODE); यदि ($http_code == 301 || $http_code == 302) ($matches = ; preg_match("/Location:(.*?)\n/", $header, $matches); $url = @parse_url(trim (array_pop($matches))); यदि (!$url) ( //url को $curl_loops = 0 पर रीडायरेक्ट करने के लिए संसाधित नहीं किया जा सका; $data लौटाएं; ) $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)) ; यदि (!$url["स्कीम"]) $url["स्कीम"] = $last_url["स्कीम"]; यदि (!$url["host"]) $url["host"] = $last_url[ "होस्ट"]; यदि (!$url["पथ"]) $url["पथ"] = $last_url["पथ"]; $new_url = $url["स्कीम"] . "://" . $ url["host"] . $url["path"] . ($url["query"]?"?".$url["query"]:""); cur_setopt($ch, CURLOPT_URL, $new_url) ; डीबग ("रीडायरेक्टिंग टू", $new_url); रिटर्न cur_redir_exec($ch); ) अन्य ($curl_loops=0; रिटर्न $डेटा; ) ) ?>
बिना FOLLOW_LOCATION के इस फ़ंक्शन का उपयोग करें और काम करना चाहिए। समस्या यह थी कि जब आप उस लाइन पर पहुंचते हैं जहां आप डेटा लौटाते हैं यदि http_code 301 oe 302 से भिन्न था, तो $data में अप्रचलित जानकारी है या कोई नहीं है। तो $debbbb काम करता है। उदाहरण 6: CURL PHP का उपयोग करके हेडर से कुकी को पार्स करना
कभी-कभी आप सर्वर php-सेटिंग्स के कारण CURLOPT_COOKIEJAR और CURLOPT_COOKIEFILE का उपयोग नहीं कर सकते हैं (वे कहते हैं कि आप इन विकल्पों का उपयोग करके सर्वर से कोई भी फाइल ले सकते हैं)। यहां समाधान है 1) CURLOPT_FOLLOWLOCATION का उपयोग न करें 2) कर्ल_setopt($ch, का उपयोग करें) CURLOPT_HEADER, 1) 3) हेडर कुकीज़ से इस तरह प्राप्त करें: preg_match_all("|सेट-कुकी: (.*);|U", $सामग्री, $परिणाम); $कुकीज़ = विस्फोट(";", $परिणाम); 4) उन्हें cur_setopt($ch, CURLOPT_COOKIE, $cookies); का उपयोग करके सेट करें; उदाहरण 7: CURL PHP का उपयोग करके हेडर से कुकी को पार्स करना
जैसा कि येवगेन ने पहले उल्लेख किया है कि कभी-कभी हम CURLOPT_COOKIEJAR और CURLOPT_COOKIEFILE का उपयोग नहीं कर सकते हैं। नीचे एक हेडर कॉलबैक फ़ंक्शन है जो मैंने जनवरी में लिखा था जो आपको कर्ल अनुरोधों के बीच कुकीज़ बनाए रखने की सुविधा देता है। कुकीज़ को पुनर्निर्देशन के दौरान भी सभी अनुरोधों के दौरान $ch में जोड़ा जाता है, ताकि आप ऐसा कर सकें CURLOPT_FOLLOWLOCATION के साथ इसका उपयोग करें। यहां कोड है: फ़ंक्शन read_header($ch, $string) (वैश्विक $स्थान; #स्थान का ट्रैक रखें/वैश्विक $cookiearr को पुनर्निर्देशित करता है; #कुकीज़ को यहां वैश्विक $ch संग्रहीत करें; # ^फ़ंक्शन पैरामीटर को ओवरराइड करता है $ch # यह ठीक है क्योंकि हमें वैश्विक $ch को # नई कुकीज़ $length = strlen($string); if(!strncmp($string, "Location:", 9)) के साथ # अपडेट करने की आवश्यकता है ( #का ट्रैक रखें अंतिम रीडायरेक्ट $स्थान = ट्रिम(substr($स्ट्रिंग, 9, -1)); ) यदि(!strncmp($string, "सेट-कुकी:", 11)) ( #कुकी प्राप्त करें $cookiestr = ट्रिम(substr( $स्ट्रिंग, 11, -1)); $कुकी = विस्फोट(";", $कुकीस्ट्र); $कुकी = विस्फोट("=', $कुकी); $कुकीनाम = ट्रिम(array_shift($कुकी)); $कुकीअर [$कुकीनाम] = ट्रिम(इम्प्लोड("=', $कुकी)); ) $कुकी = ""; if(trim($string) == "") ( #केवल हेडर foreach के अंत में निष्पादित करें ($key=>$value के रूप में $cookiearr) ( $कुकी .= "$key=$value; "; ) कर्ल_सेटोप्ट ($ ch, CURLOPT_COOKIE, $कुकी); ) वापसी $length; ) कर्ल_सेटोप्ट($ch, CURLOPT_HEADERFUNCTION, "read_header"); यह कोड मानता है कि आप $ch को हर बार आरंभ किए बिना पुन: उपयोग करेंगे (शुरुआत में केवल एक बार cur_init पर कॉल करें)। यदि आपको अपने कोड में किसी भी बिंदु पर $ch को फिर से प्रारंभ करने की आवश्यकता है तो आप $cookiearr में वर्तमान में संग्रहीत कुकीज़ तक पहुंच सकते हैं और उन्हें नए $ch में शामिल कर सकते हैं। मैंने इस फ़ंक्शन को रेगुलर एक्सप्रेशन के साथ पर्याप्त अनुभव होने से पहले लिखा था, इसलिए आपको यहां कोई प्रीग_मैच कॉल नहीं मिलेगी। मैंने इस कोड का काफी समय तक उपयोग किया है और बिना किसी समस्या के जीमेल, याहू, हॉटमेल, एओएल आदि तक पहुंच बनाई है, जहां मुझे करना था। मैं जो खोज रहा था उस तक पहुंचने से पहले लॉगिन और कुछ पृष्ठों से गुजरें। उदाहरण 8: CURL PHP का उपयोग करके हेडर लोड हैंडलर सेट करना
कर्ल का उपयोग करते हुए, मुझे एक तृतीय-पक्ष स्क्रिप्ट को कॉल करने की आवश्यकता थी जो पुनर्प्राप्त डेटा को अनुलग्नक के रूप में फिर से पास करने के लिए बाइनरी डेटा को अनुलग्नक के रूप में लौटा रही थी। समस्या यह थी कि तृतीय-पक्ष स्क्रिप्ट कभी-कभी HTTP त्रुटियाँ लौटाती थी और मैं ऐसे मामलों में शून्य-लंबाई अनुलग्नक को पारित करने से बचना चाहता था। CURLOPT_FAILONERROR और CURLOPT_HEADERFUNCTION कॉलबैक का उपयोग करने के संयोजन ने तृतीय-पक्ष स्क्रिप्ट HTTP त्रुटियों को बड़े करीने से संसाधित करने में मदद की: फ़ंक्शन कर्लहेडरकॉलबैक($resURL, $strHeader) ( if (preg_match("/^HTTP/i", $strHeader)) ( हेडर($strHeader) ); हेडर('सामग्री-विस्थापन: अनुलग्नक; फ़ाइल नाम='फ़ाइल-नाम.ज़िप''); ) रिटर्न स्ट्रलेन($strHeader); ) $resURL = कर्ल_इनिट('http://site/'); कर्ल_सेटॉप ($resURL, CURLOPT_BINARYTRANSFER, 1); कर्ल_सेटॉप्ट($resURL, CURLOPT_HEADERFUNCTION, "curlHeaderCallback"); कर्ल_सेटॉप्ट($resURL, CURLOPT_FAILONERROR, 1); कर्ल_एक्सईसी($resURL); $intReturnCode = cur_getinfo($resURL, CURLINFO_HTTP_CODE); कर्ल_क्लोज़($resURL); यदि ($intReturnCode != 200) (प्रिंट करें "कोड के साथ त्रुटि:"। $intReturnCode; ) उदाहरण 9. किसी पृष्ठ को फ़ाइल में सहेजना और CURL PHP का उपयोग करके स्थानांतरण दर की गणना करना
WritePageToFile('http://es.php.net', 'es.php.net.txt'); फ़ंक्शन WritePageToFile($sHTMLpage, $sTxtfile) ($sh = cur_init($sHTMLpage); $hFile = FOpen($sTxtfile, "w"); cur_setopt($sh, CURLOPT_FILE, $hFile); cur_setopt($sh, CURLOPT_HEADER, 0) "; प्रतिध्वनि "औसत गति डाउनलोड =="। $sAverageSpeedDownload। "
"; कर्ल_क्लोज़ ($sh); FClose ($hFile); इको "( फ़ाइल ".$sTxtfile."" को होस्टिंग के उसी पथ में देखें।" " जहां यह स्क्रिप्ट PHP है).
"; प्रतिध्वनि "औसत गति अपलोड =="। $sAverageSpeedUpload।"
"; प्रतिध्वनि "
"; $aCURLinfo = cur_getInfo($sh); print_r($aCURLinfo); इको "
";
}
उदाहरण 9. एसएसएल कनेक्शन (https) के माध्यम से एक पेज प्राप्त करना
$ch=curl_init('https://site'); कर्ल_सेटॉप ($ch, CURLOPT_HEADER, 0); कर्ल_सेटोप्ट($ch, CURLOPT_RETURNTRANSFER, 1); // त्रुटि को अक्षम करें "SSL प्रमाणपत्र समस्या, सत्यापित करें कि CA प्रमाणपत्र ठीक है" cur_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // त्रुटि को अक्षम करें "SSL: प्रमाणपत्र विषय का नाम "hostname.ru" लक्ष्य होस्ट नाम "123.123" से मेल नहीं खाता" cur_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $आउट=curl_exec($ch); //$http_code = cur_getinfo($ch, CURLINFO_HTTP_CODE); //echo "http_code='.$http_code,', err='.curl_error($ch); कर्ल_क्लोज़($ch); उदाहरण 10: कर्ल में सत्र और कुकीज़ का उपयोग करना
$cookie_filename=sys_get_temp_dir()+"/cookie.tmp"; $curl=curl_init('http://site'); कर्ल_सेटोप्ट($कर्ल, CURLOPT_RETURNTRANSFER, 1); कर्ल_सेटॉप($कर्ल, CURLOPT_COOKIEJAR, $कुकी_फ़ाइल नाम);//प्राप्त कुकीज़ को एक फ़ाइल में सहेजें कर्ल_सेटॉप($कर्ल, CURLOPT_COOKIEFILE, $कुकी_फ़ाइलनाम); // प्राधिकरण के दौरान प्राप्त कुकीज़ को सर्वर पर भेजें $out=curl_exec($curl); उदाहरण 11: कर्ल में फ़ाइल अपलोड और बहुआयामी सरणी। CURLOPT_POSTFIELDS + कर्लफ़ाइल