PHP CURL - ফাংশন এবং ব্যবহারের উদাহরণ। পিএইচপি কার্ল কমান্ড লাইন বিকল্পগুলিতে cURL এর উন্নত ব্যবহার

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

curl_setopt — CURL সেশনের জন্য একটি প্যারামিটার সেট করে

প্যারামিটারের তালিকা

CURL হ্যান্ডেল থেকে প্রাপ্ত curl_init().

প্যারামিটার সেট করতে হবে CURLOPT_XXX.

বিকল্প প্যারামিটারের মান।

bool:

প্যারামিটার মন্তব্য
CURLOPT_AUTOREFERER সত্যস্বয়ংক্রিয় ক্ষেত্র সেটিং জন্য রেফারার:হেডার দ্বারা পুনঃনির্দেশিত অনুরোধগুলিতে অবস্থান:.
CURLOPT_BINARYট্রান্সফার সত্যএকটি ধ্রুবক ব্যবহার করার সময় কাঁচা প্রতিক্রিয়া ফেরত দিতে CURLOPT_RETURN ট্রান্সফার. PHP 5.1.3 হিসাবে এই বিকল্পটির আর প্রয়োজন নেই: বিকল্পটি ব্যবহার করার সময় কাঁচা আউটপুট সর্বদা ফেরত দেওয়া হয় CURLOPT_RETURN ট্রান্সফার.
CURLOPT_COOKIESESSION সত্যকুকিজের একটি নতুন "সেশন" শুরু করার জন্য বর্তমান সেশনকে নির্দেশ দিতে। এর ফলে libcurl যেকোন "সেশন" কুকিজকে অগ্রাহ্য করবে যা পূর্ববর্তী সেশন থেকে লোড করা উচিত ছিল। ডিফল্টরূপে, libcurl সর্বদা সমস্ত কুকি সংরক্ষণ করে এবং লোড করে, সেগুলি "সেশন" হোক বা না হোক। "সেশন" কুকি এমন কুকি যা মেয়াদ শেষ হয় না এবং শুধুমাত্র বর্তমান "সেশন" এর জন্য বিদ্যমান থাকতে হবে।
CURLOPT_CERTINFO সত্য SSL শংসাপত্রের তথ্য স্ট্রিম করতে আউটপুট করতে STDERRনিরাপদ সংযোগ সহ। CURL 7.19.1 এ যোগ করা হয়েছে। PHP 5.3.2 থেকে শুরু করে উপলব্ধ। সঠিক অপারেশনের জন্য এই বিকল্পটি সক্রিয় করা প্রয়োজন CURLOPT_VERBOSE.
CURLOPT_CONNECT_ONLY সত্যলাইব্রেরীকে প্রয়োজনীয় প্রক্সি প্রমাণীকরণ এবং সংযোগ সেটআপ করতে বলে, কিন্তু ডেটা প্রেরণ করে না। এই বিকল্পটি HTTP, SMTP এবং POP3 এর জন্য প্রয়োগ করা হয়েছে। 7.15.2 এ যোগ করা হয়েছে। পিএইচপি 5.5.0 থেকে উপলব্ধ।
CURLOPT_CRLF সত্যইউনিক্স লাইন এন্ডিংকে সিআরএলএফ-এ রূপান্তর করতে।
CURLOPT_DNS_USE_GLOBAL_CACHE সত্যগ্লোবাল DNS ক্যাশে ব্যবহার করতে। এই বিকল্পটি থ্রেড নিরাপদ নয় এবং ডিফল্টরূপে সক্রিয় করা হয়।
CURLOPT_FAILONERROR সত্যপ্রাপ্ত HTTP কোড 400 এর চেয়ে বড় বা সমান হলে ব্যর্থতার একটি বিশদ প্রতিবেদনের জন্য। ডিফল্ট আচরণ কোডটিকে উপেক্ষা করে পৃষ্ঠাটিকে স্বাভাবিক হিসাবে ফিরিয়ে দেয়।
CURLOPT_FILETIME সত্যএকটি দূরবর্তী নথির পরিবর্তন তারিখ প্রাপ্ত করার চেষ্টা করতে. এই মান ফাংশন থেকে CURLINFO_FILETIME প্যারামিটার ব্যবহার করে প্রাপ্ত করা যেতে পারে curl_getinfo().
CURLOPT_FOLLOWLOCATION সত্যযেকোনো শিরোনাম অনুসরণ করতে "অবস্থান:"সার্ভার দ্বারা তার প্রতিক্রিয়াতে পাঠানো হয়েছে (মনে রাখবেন যে এটি পুনরাবৃত্তিমূলকভাবে ঘটে, পিএইচপি পাঠানো যেকোনো শিরোনাম অনুসরণ করবে "অবস্থান:", ব্যতীত যখন একটি ধ্রুবক সেট করা হয় CURLOPT_MAXREDIRS).
CURLOPT_FORBID_REUSE সত্যএকটি সংযোগ প্রক্রিয়াকরণ সম্পন্ন হওয়ার পরে বন্ধ করতে বাধ্য করা যাতে এটি পুনরায় ব্যবহার করা না যায়।
CURLOPT_FRESH_CONNECT সত্যএকটি ক্যাশে একটি পরিবর্তে একটি নতুন সংযোগ ব্যবহার জোর করে.
CURLOPT_FTP_USE_EPRT সত্যসক্রিয় FTP আপলোডের জন্য EPRT (এবং LPRT) ব্যবহার করতে। ব্যবহার করুন মিথ্যা EPRT এবং LPRT নিষ্ক্রিয় করার জন্য এবং শুধুমাত্র PORT ব্যবহার করতে।
CURLOPT_FTP_USE_EPSV সত্য FTP স্থানান্তরের সময় EPSV কমান্ডের প্রাথমিক পরীক্ষার জন্য। কমান্ড ব্যর্থ হলে, এটি PASV-এ ফিরে আসবে। মধ্যে ইনস্টল করুন মিথ্যা EPSV নিষ্ক্রিয় করতে।
CURLOPT_FTP_CREATE_MISSING_DIRS সত্যঅনুপস্থিত ডিরেক্টরি তৈরি করতে যদি একটি FTP অপারেশন একটি অস্তিত্বহীন পথের সম্মুখীন হয়।
CURLOPT_FTPAPPEND সত্যএকটি বিদ্যমান ফাইলের উপর ওভাররাইট করার পরিবর্তে, শেষ পর্যন্ত একটি দূরবর্তী ফাইল লিখতে।
CURLOPT_TCP_NODELAY TCP_NODELAY বিকল্পটি সেট বা সাফ করা উচিত কিনা তা স্থায়ীভাবে নির্দিষ্ট করে (1 = সেট, 0 = সাফ)। ডিফল্টরূপে বিকল্পটি সাফ করা হয়। libcurl 7.11.2 বা তার পরবর্তী সংস্করণের জন্য PHP 5.2.1 থেকে উপলব্ধ।
CURLOPT_FTPASCII ডাকনাম CURLOPT_TRANSFERTEXT. পরিবর্তে এটি ব্যবহার করুন.
শুধুমাত্র CURLOPT_FTPLIST সত্য FTP ডিরেক্টরি থেকে শুধুমাত্র নামের একটি তালিকা ফেরত দিতে।
CURLOPT_HEADER সত্যআউটপুটে হেডার অন্তর্ভুক্ত করতে।
CURLINFO_HEADER_OUT সত্যহ্যান্ডেল কোয়েরি স্ট্রিং ট্র্যাক করতে. PHP 5.1.3 থেকে শুরু করে উপলব্ধ। উপসর্গ CURLINFO_বিশেষভাবে ব্যবহৃত।
CURLOPT_HTTPGET সত্য HTTP অনুরোধ পদ্ধতিকে GET পদ্ধতিতে পুনরায় সেট করতে। যেহেতু GET ডিফল্ট, এই প্যারামিটারটি কেবল তখনই প্রয়োজন যদি অনুরোধের পদ্ধতিটি আগে পরিবর্তন করা হয়।
CURLOPT_HTTPPROXYTUNNEL সত্যনির্দিষ্ট HTTP প্রক্সির মাধ্যমে টানেল করতে।
CURLOPT_MUTE সত্যসম্পূর্ণরূপে cURL ফাংশন বার্তা নিষ্ক্রিয় করতে. CURL 7.15.5 এ সরানো হয়েছে (CURLOPT_RETURNTRANSFER বিকল্প ব্যবহার করা যেতে পারে)
CURLOPT_NETRC সত্যসংযোগ স্থাপন করা হচ্ছে এমন দূরবর্তী সাইটের লগইন এবং পাসওয়ার্ডের জন্য ~/.netrc ফাইলটি পড়তে।
CURLOPT_NOBODY সত্যআউটপুট থেকে প্রতিক্রিয়া বডি বাদ দিতে। অনুরোধের পদ্ধতিটি HEAD এ সেট করা আছে। এই সেটিং পরিবর্তন করা হচ্ছে মিথ্যা GET তে এটিকে পরিবর্তন করে না।
CURLOPT_NOPROGRESS

সত্য CURL স্থানান্তরের অগ্রগতি নির্দেশক নিষ্ক্রিয় করতে।

মন্তব্য করুন:

পিএইচপি স্বয়ংক্রিয়ভাবে এই পরামিতি সেট করে সত্য, শুধুমাত্র ডিবাগিং উদ্দেশ্যে এটি পরিবর্তন করুন।

CURLOPT_NOSIGNAL সত্যপিএইচপি প্রক্রিয়ায় সংকেত পাঠায় এমন কোনো কার্ল ফাংশন উপেক্ষা করতে। টাইমআউট প্যারামিটারের সঠিক ক্রিয়াকলাপের জন্য মাল্টি-থ্রেডেড SAPI-তে এই বিকল্পটি ডিফল্টরূপে সক্রিয় থাকে।
CURLOPT_POST সত্যনিয়মিত HTTP POST ব্যবহার করতে। এই POST পদ্ধতিটি স্বাভাবিক ব্যবহার করে , সাধারণত HTML আকারে ব্যবহৃত হয়।
CURLOPT_PUT সত্য HTTP PUT পদ্ধতি ব্যবহার করে একটি ফাইল ডাউনলোড করতে। ব্যবহার করা ফাইল অপশন ব্যবহার করে সেট করা আবশ্যক CURLOPT_INFILEএবং CURLOPT_INFILESIZE.
CURLOPT_RETURN ট্রান্সফার সত্যথেকে একটি স্ট্রিং হিসাবে স্থানান্তরের ফলাফল ফেরত দিতে curl_exec()ব্রাউজারে সরাসরি আউটপুটের পরিবর্তে।
CURLOPT_SAFE_UPLOAD সত্যউপসর্গ সমর্থন নিষ্ক্রিয় করতে @ ডাউনলোড করা ফাইলের জন্য CURLOPT_POSTFIELDS, যার মানে হল যে মানগুলি পাস করেছে @ ক্ষেত্র হিসাবে নিরাপদে প্রেরণ করা যেতে পারে। একটি উপসর্গের পরিবর্তে, আপনি বিকল্পটি ব্যবহার করতে পারেন CURL ফাইল d ডিফল্ট মান সহ পিএইচপি 5.5.0 এ যোগ করা হয়েছে মিথ্যা. পিএইচপি 5.6.0 এ এটি ডিফল্টরূপে সমান হয়ে গেছে সত্য.
CURLOPT_SSL_VERIFYPEER মিথ্যাহোস্ট সার্টিফিকেট চেক করা থেকে cURL বন্ধ করতে. যাচাই করার জন্য বিকল্প শংসাপত্রগুলি প্যারামিটার ব্যবহার করে নির্দিষ্ট করা যেতে পারে CURLOPT_CAINFOঅথবা প্যারামিটার দ্বারা নির্দিষ্ট সার্টিফিকেট সহ ডিরেক্টরি CURLOPT_CAPATH. ডিফল্ট হয় সত্য cURL সংস্করণ 7.10 থেকে। ডিফল্ট ডিস্ট্রিবিউশনটি সিআরএল সংস্করণ 7.10 থেকে শুরু করে ইনস্টল করা হয়েছে।
CURLOPT_TRANSFERTEXT সত্য FTP স্থানান্তরের জন্য ASCII মোড ব্যবহার করতে। LDAP ব্যবহার করার সময়, ডেটা HTML এর পরিবর্তে প্লেইন টেক্সটে ফেরত দেওয়া হয়। উইন্ডোজ সিস্টেমে থ্রেড STDOUTবাইনারি মোডে সেট করে না।
CURLOPT_UNRESTRICTED_AUTH সত্যপুনঃনির্দেশের সময় লগইন এবং পাসওয়ার্ড পাঠানো চালিয়ে যেতে (ব্যবহার করার সময় CURLOPT_FOLLOWLOCATION), এমনকি হোস্টনাম পরিবর্তিত হলেও।
CURLOPT_UPLOAD সত্যসার্ভারে ফাইল আপলোড করার জন্য প্রস্তুত করতে।
CURLOPT_VERBOSE সত্যঅতিরিক্ত তথ্য প্রদর্শন করতে। একটি প্রবাহে আউটপুট লেখে STDERR, অথবা প্যারামিটার দ্বারা নির্দিষ্ট করা ফাইল CURLOPT_STDERR.

নিম্নলিখিত বিকল্পের পরামিতি মানগুলির জন্য, মান পরামিতিটি টাইপের হতে হবে পূর্ণসংখ্যা:

প্যারামিটার মান মান সেট করুন মন্তব্য
CURLOPT_BUFFERSIZE প্রতিটি পড়ার জন্য ব্যবহৃত বাফারের আকার। যাইহোক, এই অনুরোধ পূরণ হবে কোন গ্যারান্টি নেই. CURL 7.10 এ যোগ করা হয়েছে।
CURLOPT_CLOSEPOLICY ধ্রুবকগুলির মধ্যে একটি CURLCLOSEPOLICY_*.

মন্তব্য করুন:

এই বিকল্পটি বাতিল করা হয়েছে কারণ এটি কখনই cURL এ প্রয়োগ করা হয়নি এবং কাজ করেনি।

PHP 5.6.0 এ সরানো হয়েছে।
CURLOPT_CONNECTTIMEOUT সংযোগ করার চেষ্টা করার সময় অপেক্ষা করতে সেকেন্ডের সংখ্যা৷ অনির্দিষ্টকালের জন্য অপেক্ষা করতে 0 ব্যবহার করুন।
CURLOPT_CONNECTTIMEOUT_MS সংযোগ করার চেষ্টা করার সময় অপেক্ষা করতে মিলিসেকেন্ডের সংখ্যা৷ অনির্দিষ্টকালের জন্য অপেক্ষা করতে 0 ব্যবহার করুন। যদি libcurl সিস্টেমের স্ট্যান্ডার্ড নাম সমাধানকারী ব্যবহার করে কম্পাইল করা হয়, তাহলে সংযোগটি এখনও 1 সেকেন্ডের ন্যূনতম অনুমোদিত টাইমআউট সহ টাইমআউট হিসাবে একটি সম্পূর্ণ সেকেন্ড অপেক্ষা ব্যবহার করবে। CURL সংস্করণ 7.16.2 এ যোগ করা হয়েছে। PHP 5.2.3 থেকে শুরু করে উপলব্ধ।
CURLOPT_DNS_CACHE_TIMEOUT মেমরিতে ডিএনএস রেকর্ড করা সেকেন্ডের সংখ্যা। ডিফল্টরূপে, এই প্যারামিটারটি 120 (2 মিনিট)।
CURLOPT_FTPSSLAUTH FTP প্রমাণীকরণ পদ্ধতি (সক্রিয় মোডে): CURLFTPAUTH_SSL(SSL প্রথমে চেক করা হয়), CURLFTPAUTH_TLS(TLS প্রথমে চেক করা হয়েছে) বা CURLFTPAUTH_DEFAULT(cURL নিজের জন্য সিদ্ধান্ত নেয়)। CURL সংস্করণ 7.12.2 এ যোগ করা হয়েছে।
CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE (ডিফল্টরূপে, CURL কোন সংস্করণ ব্যবহার করতে হবে তা বেছে নেয়), CURL_HTTP_VERSION_1_0 (ফোর্স HTTP/1.0), বা CURL_HTTP_VERSION_1_1 (বল করে HTTP/1.1)।
CURLOPT_HTTPAUTH

আপনি বিটওয়াইজ অপারেটর ব্যবহার করতে পারেন | (বা) একসাথে বেশ কয়েকটি পদ্ধতি একত্রিত করা। এই ক্ষেত্রে, cURL সমর্থিত অনুমোদন পদ্ধতির জন্য সার্ভারকে পোল করবে এবং সেরাটি নির্বাচন করবে।

CURLAUTH_ANY একটি উপনাম CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLAUTH_ANYSAFE হল একটি উপনাম৷ CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLOPT_INFILESIZE রিমোট সার্ভারে একটি ফাইল আপলোড করার সময় প্রত্যাশিত ফাইলের আকার, বাইটে। দয়া করে মনে রাখবেন যে এই বিকল্পটি ব্যবহার করে এই মানের থেকে বেশি ডেটা পাঠানো বন্ধ হবে না, কারণ পাঠানো ডেটা ফলাফলের উপর নির্ভর করে CURLOPT_READFUNCTION.
CURLOPT_LOW_SPEED_LIMIT প্রতি সেকেন্ডে বাইটে ডেটা স্থানান্তর হারের জন্য উপরের থ্রেশহোল্ড। যাচাই এর মধ্যে সঞ্চালিত হয় CURLOPT_LOW_SPEED_TIMEসেকেন্ড, যার পরে পিএইচপি স্থানান্তরটিকে খুব ধীর বলে মনে করে এবং এটি বাতিল করে।
CURLOPT_LOW_SPEED_TIME সেকেন্ডের সর্বাধিক সংখ্যা যার সময় স্থানান্তর হার অতিক্রম করা উচিত নয়৷ CURLOPT_LOW_SPEED_LIMIT, অন্যথায় পিএইচপি স্থানান্তরটিকে খুব ধীর হিসাবে চিহ্নিত করবে এবং এটি বন্ধ করবে।
CURLOPT_MAXCONNECTS স্থায়ী সংযোগের সর্বাধিক সংখ্যা। সীমা পৌঁছে গেলে, কোন সংযোগ বন্ধ করতে হবে তা নির্ধারণ করতে প্যারামিটার ব্যবহার করা হয়। CURLOPT_CLOSEPOLICY.
CURLOPT_MAXREDIRS স্বীকৃত পুনঃনির্দেশের সর্বাধিক সংখ্যা। এই অপশনটি একসাথে ব্যবহার করুন CURLOPT_FOLLOWLOCATION.
CURLOPT_PORT বিকল্প সংযোগ পোর্ট।
CURLOPT_POSTREDIR 1 (301 স্থায়ীভাবে সরানো), 2 (302 পাওয়া গেছে) এবং 4 (303 অন্যান্য দেখুন) ধারণকারী একটি বিট মাস্ক যখন বিকল্পটি সক্রিয় থাকে তখন HTTP POST পদ্ধতিটি প্রক্রিয়া করা উচিত কিনা তা নির্দিষ্ট করতে CURLOPT_FOLLOWLOCATIONযদি নির্দিষ্ট ধরনের পুনঃনির্দেশ ঘটে থাকে। CURL 7.19.1 এ যোগ করা হয়েছে। PHP 5.3.2 থেকে উপলব্ধ৷
CURLOPT_PROTOCOLS

মূল্যবোধের বিট মাস্ক CURLPROTO_*. এই মাস্ক libcurl দ্বারা ব্যবহৃত প্রোটোকল সীমিত করে। এটি আপনাকে প্রচুর সংখ্যক প্রোটোকলের সাথে libcurl কাজ করার অনুমতি দেয় এবং নির্দিষ্ট স্থানান্তরের কাজকে শুধুমাত্র একটি উপসেটে সীমাবদ্ধ করে। ডিফল্টরূপে, libcurl সমস্ত সমর্থিত প্রোটোকল ব্যবহার করে। এছাড়াও প্যারামিটার দেখুন CURLOPT_REDIR_PROTOCOLS.

সঠিক প্রোটোকল মান: CURLPROTO_HTTP , CURLPROTO_HTTPS , CURLPROTO_FTP , CURLPROTO_FTPS , CURLPROTO_SCP , CURLPROTO_SFTP , CURLPROTO_TELNET , CURLPROTO_LDAP , CURLPROTO_LDAPS , CURL_PROTO_LDAPS , CFTPROURL , CURLPROTO_ALL

CURLOPT_PROXYAUTH প্রক্সি সার্ভারের সাথে সংযোগ করার সময় HTTP অনুমোদন পদ্ধতি ব্যবহার করা হয়। প্যারামিটারের জন্য বর্ণিত একই বিট মাস্ক ব্যবহার করুন CURLOPT_HTTPAUTH. বর্তমানে, শুধুমাত্র CURLAUTH_BASIC এবং CURLAUTH_NTLM প্রক্সি অনুমোদনের জন্য সমর্থিত। CURL সংস্করণ 7.10.7 এ যোগ করা হয়েছে।
CURLOPT_PROXYPORT প্রক্সি সার্ভারের পোর্ট নম্বর যেখানে সংযোগ করা হয়েছে৷ এই সংখ্যাটিও প্যারামিটার ব্যবহার করে সেট করা যেতে পারে CURLOPT_PROXY.
CURLOPT_PROXYTYPE হয় CURLPROXY_HTTP (ডিফল্ট) অথবা CURLPROXY_SOCKS5। CURL 7.10 এ যোগ করা হয়েছে।
CURLOPT_REDIR_PROTOCOLS মূল্যবোধের বিট মাস্ক CURLPROTO_*. এই বিটমাস্ক রিডাইরেক্ট করার সময় libcurl দ্বারা ব্যবহৃত প্রোটোকল সীমিত করে (প্যারামিটার সক্রিয় সহ CURLOPT_FOLLOWLOCATION) এটি আপনাকে কিছু ট্রান্সমিশনের জন্য পুনঃনির্দেশ করার সময় ব্যবহৃত প্রোটোকলের সেট সীমিত করতে দেয়। ডিফল্টরূপে, libcurl FILE এবং SCP ছাড়া সমস্ত প্রোটোকল সমর্থন করে। 7.19.4 এর আগের সংস্করণগুলিতে, ব্যতিক্রম ছাড়াই সমস্ত প্রোটোকলের জন্য পুনর্নির্দেশ ব্যবহার করা হয়েছিল। এছাড়াও প্যারামিটার বিবরণ দেখুন CURLOPT_PROTOCOLSপ্রোটোকল মান সহ ধ্রুবকের তালিকার জন্য। CURL সংস্করণ 7.19.4 এ যোগ করা হয়েছে।
CURLOPT_RESUME_FROM ট্রান্সমিশন শুরু অফসেট, বাইটে.
CURLOPT_SSL_VERIFYHOST SSL শংসাপত্রে একটি সাধারণ নামের অস্তিত্ব পরীক্ষা করতে 1 ব্যবহার করুন। সাধারণ নাম বিদ্যমান এবং নির্দিষ্ট হোস্টের সাথে মেলে কিনা তা পরীক্ষা করতে 2 ব্যবহার করুন। একটি যুদ্ধ পরিবেশে, এই পরামিতির মান 2 হওয়া উচিত (ডিফল্টরূপে সেট)। CURL 7.28.1-এ মান 1-এর সমর্থন সরানো হয়েছে
CURLOPT_SSLVERSION ধ্রুবকগুলির মধ্যে একটি 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 CURL ফাংশন চালানোর জন্য অনুমোদিত সেকেন্ডের সর্বাধিক সংখ্যা৷
CURLOPT_TIMEOUT_MS CURL ফাংশন চালানোর জন্য সর্বাধিক সংখ্যক মিলিসেকেন্ড অনুমোদিত৷ যদি libcurl স্বাভাবিক সিস্টেম নাম সমাধানকারী ব্যবহার করে নির্মিত হয়, তাহলে এই সংযোগ স্প্যানটি এখনও দ্বিতীয় রাউন্ডিং টাইমআউট ব্যবহার করবে, যার ন্যূনতম সময়সীমা এক সেকেন্ডের অনুমোদিত। CURL সংস্করণ 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 সার্ভারে আপলোড সমগ্র স্থানান্তর জুড়ে গড়ে এই মান (প্রতি সেকেন্ডে বাইটে নির্দিষ্ট) অতিক্রম করলে, আপলোডটি এই প্যারামিটারের চেয়ে কম বা সমান গড় গতি বজায় রাখতে বিরতি দেওয়া হবে। ডিফল্টরূপে, গতি সীমাবদ্ধ নয়। CURL 7.15.5 এ যোগ করা হয়েছে। PHP 5.4.0 থেকে শুরু করে উপলব্ধ।
CURLOPT_SSH_AUTH_TYPES এক বা একাধিক ধ্রুবক সমন্বিত একটি বিটমাস্ক: CURLSSH_AUTH_PUBLICKYY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD. ইনস্টল করুন CURLSSH_AUTH_ANY libcurl যাতে স্বাধীনভাবে তাদের মধ্যে একটি বেছে নিতে পারে। CURL 7.16.1-এ যোগ করা হয়েছে।
CURLOPT_IPRESOLVE একটি অ্যাপ্লিকেশনকে IP ঠিকানার ধরন নির্বাচন করার অনুমতি দেয় যার সাথে হোস্টনাম নির্ধারণ করা হয়৷ আপনি যদি আইপি ঠিকানার একাধিক সংস্করণ থেকে উদ্ভূত একটি হোস্টনাম ব্যবহার করেন তবে এটি প্রয়োজনীয়। সম্ভাব্য মান হতে পারে CURL_IPRESOLVE_WHATEVER, CURL_IPRESOLVE_V4, CURL_IPRESOLVE_V6, এবং ডিফল্টরূপে CURL_IPRESOLVE_WHATEVER. CURL 7.10.8 এ যোগ করা হয়েছে।

নিম্নলিখিত বিকল্পের পরামিতি মানগুলির জন্য, মান পরামিতিটি টাইপের হতে হবে স্ট্রিং:

প্যারামিটার মান মান সেট করুন মন্তব্য
CURLOPT_CAINFO একটি ফাইলের নাম যেখানে এক বা একাধিক শংসাপত্র রয়েছে যার বিরুদ্ধে নোড চেক করা হবে। এই পরামিতি শুধুমাত্র যখন এর সাথে একত্রে ব্যবহার করা হয় তখনই বোঝা যায় CURLOPT_SSL_VERIFYPEER. একটি পরম পথ প্রয়োজন.
CURLOPT_CAPATH একাধিক CA শংসাপত্র ধারণকারী একটি ডিরেক্টরি। এর সাথে একযোগে এই বিকল্পটি ব্যবহার করুন CURLOPT_SSL_VERIFYPEER.
CURLOPT_COOKIE হেডার বিষয়বস্তু "কুকি:", HTTP অনুরোধে ব্যবহৃত। অনুগ্রহ করে মনে রাখবেন যে একাধিক কুকি একটি সেমিকোলন দ্বারা পৃথক করা হয়েছে এবং একটি স্থান দ্বারা অনুসরণ করা হয়েছে (উদাহরণস্বরূপ, " ফল = আপেল; রঙ = লাল")
CURLOPT_COOKIEFILE কুকিজ ধারণকারী ফাইলের নাম. এই ফাইলটি অবশ্যই নেটস্কেপ ফরম্যাটে বা ফাইলটিতে লিখিত HTTP হেডার হতে হবে। যদি একটি খালি স্ট্রিং ফাইলের নাম হিসাবে পাস করা হয়, তাহলে কুকি সংরক্ষণ করা হবে না, তবে তাদের প্রক্রিয়াকরণ এখনও সক্ষম হবে।
CURLOPT_COOKIEJAR ফাইলের নাম যেখানে বর্তমান স্থানান্তরের সমস্ত অভ্যন্তরীণ কুকি হ্যান্ডেলটি বন্ধ হওয়ার পরে সংরক্ষণ করা হবে, উদাহরণস্বরূপ curl_close কল করার পরে।
CURLOPT_CUSTOMREQUEST

পরিবর্তে ব্যবহার করা কাস্টম অনুরোধ পদ্ধতি "পাওয়া"বা "মাথা"একটি HTTP অনুরোধ করার সময়। এই প্রশ্নের জন্য দরকারী "মুছে ফেলা"বা অন্য, আরও বিরল HTTP অনুরোধ। সঠিক অর্থ যেমন শব্দ হবে "পাওয়া", "পোস্ট", "সংযোগ করুন"এবং তাই; সেগুলো. এখানে সম্পূর্ণ HTTP অনুরোধ লাইন লিখবেন না। উদাহরণস্বরূপ, একটি ইঙ্গিত "GET /index.html HTTP/1.0\r\n\r\n"ভুল হবে।

মন্তব্য করুন:

আপনি নিশ্চিত না হওয়া পর্যন্ত এই বৈশিষ্ট্যটি ব্যবহার করবেন না যে সার্ভার এই ধরনের অনুরোধ সমর্থন করে।

CURLOPT_EGDSOCKET লাইক CURLOPT_RANDOM_FILE, ফাইলের নামটি এনট্রপি গ্যাদারিং ডেমন সকেটে সেট করা ছাড়া।
CURLOPT_ENCODING হেডার বিষয়বস্তু "স্বীকার-এনকোডিং:". এটি অনুরোধটিকে ডিকোড করার অনুমতি দেয়। সমর্থিত এনকোডিং হয় "পরিচয়", "চলান"এবং "gzip". যদি একটি খালি স্ট্রিং পাস করা হয়, "" , সমস্ত সমর্থিত এনকোডিং প্রকার সমন্বিত একটি হেডার পাঠানো হয়। CURL 7.10 এ যোগ করা হয়েছে।
CURLOPT_FTPPORT FTP "PORT" কমান্ডের জন্য IP ঠিকানা নির্ধারণ করতে যে মান ব্যবহার করা হবে। "PORT" কমান্ড সার্ভারকে বলে যে এটি কোন আইপি ঠিকানার সাথে সংযুক্ত হওয়া উচিত। এটি একটি আইপি ঠিকানা, হোস্টনাম, নেটওয়ার্ক ইন্টারফেসের নাম (ইউনিক্সের অধীনে), অথবা ডিফল্ট সিস্টেম আইপি ঠিকানা ব্যবহার করার জন্য "-" হতে পারে।
CURLOPT_INTERFACE ব্যবহার করার জন্য নেটওয়ার্ক ইন্টারফেসের নাম। একটি ইন্টারফেস নাম, একটি IP ঠিকানা, বা একটি হোস্ট নাম হতে পারে।
CURLOPT_KEYPASSWD ব্যক্তিগত কী ব্যবহার করার জন্য পাসওয়ার্ড প্রয়োজন CURLOPT_SSLKEYবা CURLOPT_SSH_PRIVATE_KEYFILE. CURL 7.16.1-এ যোগ করা হয়েছে।
CURLOPT_KRB4LEVEL নিরাপত্তা স্তর KRB4 (Kerberos 4)। নিম্নলিখিত মানগুলির মধ্যে যেকোনও (সবচেয়ে দুর্বল থেকে শক্তিশালী) সঠিক: "পরিষ্কার", "নিরাপদ", "গোপনীয়", "ব্যক্তিগত".. যদি নির্দিষ্ট স্ট্রিং প্রদত্ত মান থেকে পৃথক হয়, মান ব্যবহার করা হবে "ব্যক্তিগত". এই বিকল্প সেট করা হচ্ছে খালি KRB4 নিরাপত্তা সম্পূর্ণরূপে নিষ্ক্রিয় করবে। এই মুহূর্তে, KRB4 নিরাপত্তা শুধুমাত্র FTP লেনদেনের সাথে কাজ করে।
CURLOPT_POSTFIELDS সমস্ত ডেটা একটি HTTP POST অনুরোধে প্রেরণ করা হয়। একটি ফাইল স্থানান্তর করতে, ফাইলের নামের আগে উল্লেখ করুন @ , এবং ফাইলের সম্পূর্ণ পাথ ব্যবহার করুন। ফাইলের ধরনটি বিন্যাস ব্যবহার করেও নির্দিষ্ট করা যেতে পারে " ;টাইপ=মাইমেটাইপ" ফাইলের নাম অনুসরণ করুন৷ এই প্যারামিটারটি একটি url-এনকোডেড স্ট্রিং হিসাবে পাস করা যেতে পারে, যেমন " para1=val1¶2=val2&...", এবং একটি অ্যারের আকারে, যার কীগুলি হবে ক্ষেত্রগুলির নাম, এবং মানগুলি হবে তাদের বিষয়বস্তু৷ যদি মানটি একটি অ্যারে হয়, তাহলে শিরোনাম বিষয়বস্তুর প্রকারসেট করা হবে মাল্টিপার্ট/ফর্ম-ডেটা. পিএইচপি 5.2.0 থেকে শুরু করে, উপসর্গ সহ ফাইল স্থানান্তর করার সময় @ , মান অবশ্যই একটি অ্যারে হতে হবে। যেহেতু পিএইচপি 5.5.0, প্রিফিক্স @ অপ্রচলিত এবং ফাইলগুলি ব্যবহার করে পাঠানো যেতে পারে CURL ফাইল. উপসর্গ @ মান দিয়ে শুরু করার অনুমতি দিতে অক্ষম করা যেতে পারে @ বিকল্প সেট করে CURLOPT_SAFE_UPLOADঅর্থে সত্য.
CURLOPT_PROXY HTTP প্রক্সি যার মাধ্যমে অনুরোধ রাউট করা হবে।
CURLOPT_PROXYUSERPWD ফর্মে লেখা লগইন এবং পাসওয়ার্ড ":" , একটি প্রক্সির মাধ্যমে সংযোগ করার সময় ব্যবহৃত হয়।
CURLOPT_RANDOM_FILE SSL-এর জন্য র্যান্ডম নম্বর জেনারেটর আরম্ভ করতে ব্যবহৃত ফাইলের নাম।
CURLOPT_RANGE বিন্যাসে ডাউনলোড করা ডেটার পরিসর "এক্স-ওয়াই", এবং হয় X বা Y বাদ দেওয়া যেতে পারে। HTTP প্রোটোকল কমা দ্বারা বিভক্ত একাধিক রেঞ্জের সংক্রমণকেও সমর্থন করে, সেগুলি বিন্যাসে নির্দিষ্ট করা হয় "X-Y,N-M".
CURLOPT_REFERER হেডার বিষয়বস্তু "রেফারার:", যা HTTP অনুরোধে ব্যবহার করা হবে।
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 32 হেক্সাডেসিমেল সংখ্যা ধারণকারী একটি স্ট্রিং। স্ট্রিংটি অবশ্যই দূরবর্তী কম্পিউটারের সর্বজনীন কী-এর একটি MD5 চেকসাম হতে হবে এবং চেকসাম পাবলিক কী-এর সাথে মেলে না হওয়া পর্যন্ত libcurl রিমোট হোস্টের সাথে সংযোগটি পুনরায় সেট করবে। এই বিকল্পটি শুধুমাত্র SCP এবং SFTP ব্যবহার করে ডেটা স্থানান্তরের জন্য। CURL 7.17.1 এ যোগ করা হয়েছে।
CURLOPT_SSH_PUBLIC_KEYFILE আপনার সর্বজনীন কী-এর জন্য ফাইলের নাম। নির্দিষ্ট করা না থাকলে, HOME এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকলে libcurl ফাইল $HOME/.ssh/id_dsa.pub এবং বর্তমান ডিরেক্টরিতে ফাইল "id_dsa.pub" যদি হোম এনভায়রনমেন্ট ভেরিয়েবল সেট করা না থাকে। CURL 7.16.1-এ যোগ করা হয়েছে।
CURLOPT_SSH_PRIVATE_KEYFILE আপনার ব্যক্তিগত কী-এর জন্য ফাইলের নাম। নির্দিষ্ট না করা থাকলে, HOME এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকলে libcurl $HOME/.ssh/id_dsa ফাইলে ডিফল্ট হয় এবং HOME এনভায়রনমেন্ট ভেরিয়েবল সেট না করা থাকলে বর্তমান ডিরেক্টরিতে "id_dsa" ফাইল। ফাইলটি পাসওয়ার্ড সুরক্ষিত থাকলে, ব্যবহার করে পাসওয়ার্ড সেট করুন CURLOPT_KEYPASSWD. CURL 7.16.1-এ যোগ করা হয়েছে।
CURLOPT_SSL_CIPHER_LIST SSL স্থানান্তরে ব্যবহৃত সাইফারের তালিকা। উদাহরণ স্বরূপ, RC4-SHAএবং TLSv1বৈধ সাইফার তালিকা.
CURLOPT_SSLCERT একটি সঠিকভাবে ফর্ম্যাট করা PEM শংসাপত্র সহ একটি ফাইলের নাম৷
CURLOPT_SSLCERTPASSWD সার্টিফিকেট ব্যবহার করার জন্য পাসওয়ার্ড প্রয়োজন CURLOPT_SSLCERT.
CURLOPT_SSLCERTTYPE শংসাপত্র বিন্যাস। ফরম্যাট সমর্থিত "PEM"(ডিফল্ট), "DER"এবং "ইঞ্জি". CURL সংস্করণ 7.9.3 এ যোগ করা হয়েছে।
CURLOPT_SSLENGINE প্যারামিটারে নির্দিষ্ট করা SSL ব্যক্তিগত কী-এর জন্য এনক্রিপশন ইঞ্জিন আইডি CURLOPT_SSLKEY.
CURLOPT_SSLENGINE_DEFAULT অ্যাসিমেট্রিক এনক্রিপশন অপারেশনের জন্য ব্যবহৃত এনক্রিপশন মেকানিজমের শনাক্তকারী।
CURLOPT_SSLKEY SSL প্রাইভেট কী ফাইলের নাম।
CURLOPT_SSLKEYPASSWD

পরামিতি দ্বারা নির্দিষ্ট করা SSL ব্যক্তিগত কী ব্যবহার করার জন্য গোপন পাসওয়ার্ড প্রয়োজন CURLOPT_SSLKEY.

মন্তব্য করুন:

যেহেতু এই প্যারামিটারে একটি মূল্যবান পাসওয়ার্ড রয়েছে, তাই এই PHP স্ক্রিপ্টটিকে নিরাপদ জায়গায় রাখতে ভুলবেন না।

CURLOPT_SSLKEYTYPE প্যারামিটারে নির্দিষ্ট করা SSL প্রাইভেট কী-এর ধরন CURLOPT_SSLKEY. নিম্নলিখিত কী ধরনের সমর্থিত: "PEM"(ডিফল্ট), "DER"এবং "ইঞ্জি".
CURLOPT_URL ডাউনলোডযোগ্য URL। ব্যবহার করে একটি সেশন শুরু করার সময় এই প্যারামিটারটিও সেট করা যেতে পারে curl_init().
CURLOPT_USERAGENT হেডার বিষয়বস্তু "ব্যবহারিক দূত: ", একটি HTTP অনুরোধ পাঠানো হয়েছে.
CURLOPT_USERPWD সংযোগের সময় ব্যবহৃত লগইন এবং পাসওয়ার্ড, বিন্যাসে উল্লেখ করা হয়েছে ":" .

নিম্নলিখিত বিকল্প প্যারামিটার মানগুলির জন্য, মান পরামিতি একটি অ্যারে হতে হবে:

প্যারামিটার মান মান সেট করুন মন্তব্য
CURLOPT_HTTP200ALIASES HTTP 200 প্রতিক্রিয়াগুলির একটি অ্যারে যা ভুল প্রতিক্রিয়াগুলির পরিবর্তে সঠিক প্রতিক্রিয়া হিসাবে বিবেচিত হবে৷ CURL সংস্করণ 7.10.3 এ যোগ করা হয়েছে।
CURLOPT_HTTPHEADER বিন্যাস বিন্যাসে ("কন্টেন্ট-টাইপ: টেক্সট/প্লেইন", "কন্টেন্ট-লেংথ: 100") সেট HTTP হেডারগুলির একটি অ্যারে
CURLOPT_POSTQUOTE একটি FTP অনুরোধ সম্পূর্ণ হওয়ার পরে সার্ভারে FTP কমান্ডের একটি অ্যারে কার্যকর করা হয়।
CURLOPT_QUOTE FTP অনুরোধ করার আগে সার্ভারে FTP কমান্ডের একটি অ্যারে কার্যকর করা হয়।

নিম্নলিখিত বিকল্পের পরামিতি মানগুলির জন্য, মান প্যারামিটারটি একটি স্ট্রিম হ্যান্ডেল হতে হবে (উদাহরণস্বরূপ, ফাংশন দ্বারা প্রত্যাবর্তন করা হয়েছে) fopen()):

প্যারামিটার মান মান সেট করুন
CURLOPT_FILE যে ফাইলে ট্রান্সফার রেজাল্ট লেখা থাকবে। ডিফল্ট আউটপুট স্ট্রীম STDOUT(ব্রাউজার উইন্ডো)।
CURLOPT_INFILE সার্ভারে আপলোড করার সময় যে ফাইল থেকে ডেটা পড়তে হবে।
CURLOPT_STDERR ত্রুটি স্ট্রীমের জায়গায় ব্যবহৃত বিকল্প ত্রুটি আউটপুট ফাইল STDERR.
CURLOPT_WRITEHEADER যে ফাইলটিতে বর্তমান অপারেশনের হেডার লেখা হবে।

নিম্নলিখিত বিকল্প পরামিতি মানগুলির জন্য, মান পরামিতি একটি বৈধ ফাংশনের নাম বা বন্ধ হওয়া আবশ্যক:

প্যারামিটার মান মান সেট করুন
CURLOPT_HEADERFUNCTION কলব্যাক ফাংশন দুটি পরামিতি লাগে। প্রথম প্যারামিটারটি হল cURL হ্যান্ডেল, দ্বিতীয় প্যারামিটারটি একটি স্ট্রিং যেখানে শিরোনাম লেখা হবে। এই কলব্যাক ফাংশন ব্যবহার করে শিরোনাম লিখতে হবে। লেখা বাইটের সংখ্যা ফেরত দেওয়া উচিত।
CURLOPT_PASSWDFUNCTION কলব্যাক ফাংশন তিনটি পরামিতি লাগে। প্রথম প্যারামিটারটি হল cURL হ্যান্ডেল, দ্বিতীয় প্যারামিটারটি পাসওয়ার্ড প্রম্পট স্ট্রিং এবং তৃতীয় প্যারামিটারটি সর্বাধিক পাসওয়ার্ড দৈর্ঘ্য। পাসওয়ার্ড ধারণকারী একটি স্ট্রিং ফেরত দেওয়া উচিত.
CURLOPT_PROGRESSFUNCTION

কলব্যাক ফাংশন পাঁচটি পরামিতি নেয়। প্রথমটি হল cURL বর্ণনাকারী, দ্বিতীয়টি হল সার্ভার থেকে ডাউনলোড করা প্রত্যাশিত মোট বাইট সংখ্যা, তৃতীয়টি ইতিমধ্যে ডাউনলোড করা বাইটের সংখ্যা, চতুর্থটি সার্ভারে পাঠানোর প্রত্যাশিত মোট বাইট সংখ্যা এবং পঞ্চমটি ইতিমধ্যে পাঠানো বাইটের সংখ্যা।

মন্তব্য করুন:

কলব্যাক ফাংশন কল করা হয় শুধুমাত্র যদি বিকল্প CURLOPT_NOPROGRESSমান সেট করুন মিথ্যা.

ট্রান্সফার বাতিল করার জন্য আপনি একটি অ-শূন্য মান ফেরত দিতে পারেন। এই ক্ষেত্রে একটি ত্রুটি প্রদর্শিত হবে CURLE_ABORTED_BY_CALLBACK.

CURLOPT_READFUNCTION কলব্যাক ফাংশন তিনটি পরামিতি লাগে। প্রথম প্যারামিটারটি হল cURL হ্যান্ডেল, দ্বিতীয় প্যারামিটার হল স্ট্রিম রিসোর্সটি বিকল্পের মাধ্যমে cURL-এ পাস করা CURLOPT_INFILE, এবং তৃতীয় প্যারামিটার হল সর্বাধিক অনুমোদিত পরিমাণ ডেটা পড়ার জন্য। কলব্যাক ফাংশনটি অবশ্যই দৈর্ঘ্যের একটি স্ট্রিং ফেরত দিতে হবে যা অনুরোধকৃত ডেটার চেয়ে বেশি নয়, সাধারণত পাস করা স্ট্রিমিং সংস্থান থেকে পড়ার মাধ্যমে। ফাইলের শেষ সিগন্যাল করার জন্য একটি খালি স্ট্রিং ফেরত দেওয়া উচিত ইওএফ.
CURLOPT_WRITEFUNCTION কলব্যাক ফাংশন দুটি পরামিতি লাগে। প্রথম প্যারামিটারটি হল cURL হ্যান্ডেল, এবং দ্বিতীয় প্যারামিটার হল স্ট্রিং যাতে লেখা হবে ডেটা। এই ফাংশন ব্যবহার করে ডেটা সংরক্ষণ করতে হবে। এটি অবশ্যই লিখিত বাইটের সঠিক সংখ্যা ফেরত দিতে হবে, অন্যথায় একটি ত্রুটি সহ ডাউনলোডটি বাতিল করা হবে।

অন্যান্য অর্থ:

মান ফেরত দিন

রিটার্নস সত্যসফল সমাপ্তির উপর বা মিথ্যাএকটি ত্রুটির ক্ষেত্রে।

পরিবর্তনের তালিকা

সংস্করণ বর্ণনা
5.6.0 অপশন CURL_SAFE_UPLOADএখন এর একটি ডিফল্ট মান আছে সত্য.
5.6.0 অপসারণ অপশন CURLOPT_CLOSEPOLICYএবং এর সংশ্লিষ্ট অর্থ।
5.5.0 কলব্যাক ফাংশনে প্রথম আর্গুমেন্ট হিসেবে সিআরএল রিসোর্স যোগ করা হয় CURLOPT_PROGRESSFUNCTION.
5.5.0 বিকল্প যোগ করা হয়েছে CURLOPT_SHARE.
5.3.0 বিকল্প যোগ করা হয়েছে CURLOPT_PROGRESSFUNCTION.
5.2.10 বিকল্প যোগ করা হয়েছে CURLOPT_PROTOCOLSএবং CURLOPT_REDIR_PROTOCOLS.
5.1.0 বিকল্প যোগ করা হয়েছে CURLOPT_AUTOREFERER, CURLOPT_BINARYট্রান্সফার, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTHএবং CURLOPT_TIMECONDITION.
5.0.0 বিকল্প যোগ করা হয়েছে CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPEএবং CURLOPT_HTTP200ALIASES.

উদাহরণ

উদাহরণ #1 একটি CURL সেশন শুরু করা এবং একটি ওয়েব পৃষ্ঠা লোড করা

// একটি নতুন সিআরএল সংস্থান তৈরি করুন
$ch = curl_init();

/* http://localhost/upload.php:
print_r($_POST);
print_r($_FILES);
*/

$ch = curl_init();

$data = array("name" => "Foo" , "file" => "@/home/user/test.png");

Curl_setopt($ch, CURLOPT_URL, "http://localhost/upload.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $ডেটা);

Curl_exec($ch);
?>

এই উদাহরণ চালানোর ফলাফল:

অ্যারে ( => Foo) অ্যারে ( => অ্যারে ( => test.png => image/png => /tmp/phpcpjNeQ => 0 => 279))

মন্তব্য

মন্তব্য করুন:

একটি অ্যারে পাস CURLOPT_POSTFIELDSহিসাবে ডেটা এনকোড করে মাল্টিপার্ট/ফর্ম-ডেটা, যেখানে একটি ইউআরএল-এনকোডেড স্ট্রিং পাস করার ফলে ডেটা এনকোড হবে অ্যাপ্লিকেশন/x-www-form-urlencoded.

cURL হল একটি টুল যা আপনাকে বিভিন্ন সার্ভারের সাথে ইন্টারঅ্যাক্ট করতে দেয় এবং অনেক প্রোটোকল সমর্থন করে: HTTP, FTP, TELNET ইত্যাদি। cURL মূলত একটি কমান্ড লাইন ইউটিলিটি। কিন্তু, সৌভাগ্যবশত আমাদের জন্য, পিএইচপি কার্ল লাইব্রেরির সাথে কাজ করা সমর্থন করে। এই নিবন্ধে আমরা cURL এর সাথে কাজ করার অ-তুচ্ছ উদাহরণগুলি দেখব।

কেন curl?

প্রকৃতপক্ষে, অন্য সার্ভারে অনুরোধ পাঠানোর আরও অনেক উপায় আছে, উদাহরণস্বরূপ, একটি পৃষ্ঠার বিষয়বস্তু পুনরুদ্ধার করা। অনেক লোক, বেশিরভাগ অলসতার কারণে, cURL এর পরিবর্তে সাধারণ PHP ফাংশন ব্যবহার করে:

$content = file_get_contents("http://www.example.com"); // অথবা $lines = ফাইল("http://www.example.com"); // অথবা রিডফাইল("http://www.example.com");

যাইহোক, তারা দক্ষ ত্রুটি পরিচালনার জন্য অনুমতি দেয় না। এছাড়াও অনেকগুলি কাজ রয়েছে যা তারা একেবারেই করতে পারে না - উদাহরণস্বরূপ, কুকিজ, অনুমোদন, পোস্ট অনুরোধ, ফাইল ডাউনলোড করা।

cUrl একটি শক্তিশালী টুল যা একাধিক প্রোটোকল সমর্থন করে এবং সম্পূর্ণ অনুরোধের তথ্য প্রদান করে।

cUrl বেসিক

জটিল উদাহরণে যাওয়ার আগে, আসুন পিএইচপি-তে একটি সিআরএল অনুরোধের মৌলিক কাঠামোটি দেখি। পিএইচপিতে একটি সিআরএল অনুরোধ সম্পাদন করতে, আপনাকে 4টি প্রধান পদক্ষেপ নিতে হবে:

  1. আরম্ভ.
  2. সেটিং অপশন।
  3. অনুরোধটি কার্যকর করা হচ্ছে।
  4. সম্পদ পরিষ্কার করা.
// 1. আরম্ভ $ch = curl_init(); // 2. URL curl_setopt($ch, CURLOPT_URL, "http://www.google.com") সহ বিকল্পগুলি সেট করুন; curl_setopt($ch, CURLOPT_RETURNট্রান্সফার, 1); curl_setopt($ch, CURLOPT_HEADER, 0); // 3. অনুরোধটি কার্যকর করা এবং প্রতিক্রিয়া প্রাপ্ত করা $output = curl_exec($ch); // 4. ক্লিনিং রিসোর্স curl_close($ch);

আমরা বেশিরভাগই এই নিবন্ধে ধাপ # 2 এর দিকে তাকিয়ে থাকব যেহেতু সেখানেই যাদুটি ঘটে। CURL বিকল্পগুলির তালিকাটি খুব বড়, তাই আমরা আজ সমস্ত বিকল্প বিবেচনা করব না, তবে নির্দিষ্ট সমস্যা সমাধানের জন্য দরকারী সেগুলি ব্যবহার করব।

বাগ ট্র্যাকিং

প্রয়োজনে, আপনি ত্রুটিগুলি ট্র্যাক করতে নিম্নলিখিত লাইনগুলি যোগ করতে পারেন:

// ... $output = curl_exec($ch); যদি ($output === FALSE) ( echo "cURL ত্রুটি: " . curl_error($ch); ) // ...

দয়া করে মনে রাখবেন যে আমরা “==” এর পরিবর্তে “===” ব্যবহার করি কারণ একটি খালি সার্ভার প্রতিক্রিয়া এবং বুলিয়ান মান FALSE এর মধ্যে পার্থক্য করা প্রয়োজন, যা একটি ত্রুটির ক্ষেত্রে ফেরত দেওয়া হয়৷

একটি অনুরোধ সম্পর্কে তথ্য পাওয়া

আরেকটি ঐচ্ছিক পদক্ষেপ হল CURL অনুরোধটি কার্যকর করার পরে তার সম্পর্কে তথ্য প্রাপ্ত করা।

// ... curl_exec($ch); $info = curl_getinfo($ch); প্রতিধ্বনি "নিলেন"। $info["total_time"]। "url এর জন্য সেকেন্ড"। $info["url"]; //...

ফলস্বরূপ, আপনি নিম্নলিখিত তথ্য সহ একটি অ্যারে পাবেন:

  • "url"
  • "বিষয়বস্তুর প্রকার"
  • "http_code"
  • "হেডার_সাইজ"
  • "অনুরোধ_আকার"
  • "ফাইলটাইম"
  • "ssl_verify_result"
  • "পুনঃনির্দেশ_গণনা"
  • "মোট সময়"
  • "namelookup_time"
  • "সংযোগ_সময়"
  • "প্রি-ট্রান্সফার_টাইম"
  • "সাইজ_আপলোড"
  • "সাইজ_ডাউনলোড"
  • "গতি_ডাউনলোড"
  • "গতি_আপলোড"
  • "ডাউনলোড_সামগ্রী_দৈর্ঘ্য"
  • "আপলোড_সামগ্রী_দৈর্ঘ্য"
  • "স্টার্ট ট্রান্সফার_টাইম"
  • "পুনঃনির্দেশ_সময়"

ব্রাউজারের উপর নির্ভর করে ট্র্যাকিং পুনঃনির্দেশ করুন

এই উদাহরণে, আমরা একটি স্ক্রিপ্ট লিখব যা বিভিন্ন ব্রাউজার সেটিংসের উপর ভিত্তি করে পুনঃনির্দেশ সনাক্ত করবে। উদাহরণ স্বরূপ, কিছু সাইট মোবাইল ডিভাইস থেকে ভিজিটরকে অন্য দেশের ভিজিটরদের কাছে রিডাইরেক্ট করে।

আমরা ব্যবহারকারী-এজেন্ট এবং ভাষা সহ আমাদের নিজস্ব শিরোনাম সেট করতে CURLOPT_HTTPHEADER বিকল্পটি ব্যবহার করব এবং সাইটগুলি আমাদেরকে কোথায় পুনঃনির্দেশিত করে তা দেখব।

// URLs $urls = array("http://www.cnn.com", "http://www.mozilla.com", "http://www.facebook.com"); // ব্রাউজার $browsers = array("standard" => array ("user_agent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5. 6 (.NET CLR 3.5.30729)", "language" => "en-us,en;q=0.5"), "iphone" => অ্যারে ("user_agent" => "Mozilla/5.0 (iPhone; U; Mac OS X এর মত CPU; en) AppleWebKit/420+ (KHTML, Gecko এর মত) Version/3.0 Mobile/1A537a Safari/419.3", "language" => "en"), "french" => array ("user_agent" = > "Mozilla/4.0 (সামঞ্জস্যপূর্ণ; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)", "language" => "fr,fr-FR;q=0.5")); foreach ($urls $url হিসাবে) ( প্রতিধ্বনি "URL: $url\n"; foreach ($browser as $test_name => $browser) ( $ch = curl_init(); // curl_setopt($ch, CURLOPT_URL ঠিকানা সেট করুন , $url); // curl_setopt($ch, CURLOPT_HTTPHEADER, array("User-Agent: ($browser["user_agent"])", "Accept-Language: ($browser["language") ব্যবহৃত ব্রাউজার এবং ভাষা নির্দেশ করুন ]) ")); // আমাদের পৃষ্ঠার বিষয়বস্তুর প্রয়োজন নেই curl_setopt($ch, CURLOPT_NOBODY, 1); // আমাদের শুধুমাত্র শিরোনাম প্রয়োজন curl_setopt($ch, CURLOPT_HEADER, 1); // পরিবর্তে ফলাফলটি ফেরত দিন এর আউটপুট curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1); $output = curl_exec($ch); curl_close($ch); // HTTP শিরোনামে পুনর্নির্দেশ সংজ্ঞায়িত করুন? যদি (preg_match("!স্থান: (.*)!" , $output, $matchs)) ( echo "$test_name: $maches\n" এ পুনঃনির্দেশ; ) অন্য ( echo "$test_name: no redirection\n"; ) ) echo "\n\n"; )

একটি লুপে আমরা প্রতিটি URL এর জন্য ব্রাউজার চেক করি। প্রথমে আমরা আমাদের অনুরোধের বিকল্পগুলি সেট করি: URL এবং ব্রাউজার এবং ভাষা পরীক্ষা করা হবে৷

কারণ আমরা একটি বিশেষ বিকল্প সেট করেছি; অনুরোধের ফলাফলে শুধুমাত্র HTTP শিরোনাম থাকবে। একটি সাধারণ রেগুলার এক্সপ্রেশন ব্যবহার করে, আমরা পরীক্ষা করতে পারি যে প্রতিক্রিয়াটিতে "অবস্থান:" স্ট্রিং আছে কিনা।

স্ক্রিপ্ট সম্পাদনের ফলাফল:

URL: http://www.cnn.com স্ট্যান্ডার্ড: http://edition.cnn.com/ iphone-এ পুনঃনির্দেশ: http://edition.cnn.com/ ফ্রেঞ্চ-এ পুনঃনির্দেশ: http://edition.cnn-এ পুনঃনির্দেশ .com/ URL: http://www.mozilla.com স্ট্যান্ডার্ড: https://www.mozilla.org/firefox/ iphone-এ পুনঃনির্দেশ করে: https://www.mozilla.org/firefox/ ফ্রেঞ্চ-এ পুনঃনির্দেশ করে https://www.mozilla.org/firefox/ URL: http://www.facebook.com মান: https://www.facebook.com/ আইফোনে পুনঃনির্দেশ করে: http://m.facebook.com-এ পুনঃনির্দেশ করে /?refsrc=http%3A%2F%2Fwww.facebook.com%2F&_rdr ফরাসি: কোন পুনঃনির্দেশ নেই

POST অনুরোধ পাঠানো হচ্ছে

GET অনুরোধগুলি সম্পাদন করার সময়, ক্যোয়ারী স্ট্রিংয়ে ডেটা পাস করা যেতে পারে। উদাহরণস্বরূপ, আপনি যখন Google এ অনুসন্ধান করেন, তখন আপনার প্রশ্নটি একটি URL-এ অনুবাদ করা হয়:

http://www.google.com/search?q=google

এই প্রশ্নের ফলাফল পেতে আপনার এমনকি cURL এর প্রয়োজন নেই, আপনি অলস হতে পারেন এবং "file_get_contents()" ব্যবহার করতে পারেন।

কিন্তু কিছু HTML ফর্ম POST পদ্ধতি ব্যবহার করে। এই ক্ষেত্রে, ডেটা URL-এর পরিবর্তে অনুরোধ বার্তার মূল অংশে পাঠানো হয়।

আসুন একটি স্ক্রিপ্ট লিখি যা POST অনুরোধ পাঠাবে। প্রথমে, আসুন একটি সাধারণ পিএইচপি ফাইল তৈরি করি যা এই অনুরোধগুলি গ্রহণ করবে এবং এতে পাঠানো ডেটা ফেরত দেবে। এটাকে post_output.php বলি:

$url = "http://localhost/post_output.php"; $post_data = অ্যারে ("foo" => "bar", "query" => "FooBar", "action" => "Submit"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNট্রান্সফার, 1); // একটি POST অনুরোধ করুন curl_setopt($ch, CURLOPT_POST, 1); // ডাটা যোগ করুন curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $output = curl_exec($ch); curl_close($ch); echo $output;

এই স্ক্রিপ্টটি আউটপুট করবে:

অ্যারে ( => বার => ফুবার => জমা দিন)

এই স্ক্রিপ্ট post_output.php ফাইলে একটি POST অনুরোধ পাঠিয়েছে। যা $_POST অ্যারের বিষয়বস্তুকে আউটপুট করেছে এবং আমরা cURL ব্যবহার করে এই প্রতিক্রিয়া পেয়েছি।

ফাইল আপলোড করা হচ্ছে

ঠিক আগের উদাহরণের মতো, আসুন একটি ফাইল তৈরি করি যা অনুরোধ গ্রহণ করবে, upload_output.php :

Print_r($_FILES);

এবং স্ক্রিপ্ট নিজেই যে ফাইলগুলি ডাউনলোড করে:

$url = "http://localhost/upload_output.php"; $post_data = অ্যারে ("foo" => "বার", // ফাইল আপলোড করার জন্য "upload" => "@/tmp/desert.jpg"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNট্রান্সফার, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $output = curl_exec($ch); curl_close($ch); echo $output;

আপনি যদি একটি ফাইল আপলোড করতে চান, তবে আপনাকে যা করতে হবে তা হল একটি সাধারণ POST অনুরোধ প্যারামিটারের মতো, যা "@" এর সাথে প্রিফিক্স করা হয়েছে। স্ক্রিপ্টের ফলাফল:

অ্যারে ( => অ্যারে ( => desert.jpg => application/octet-stream => /tmp/phpAhEvXy => 0 => 845941))

মাল্টি সিআরএল

পিএইচপি-তে cURL-এর উন্নত বৈশিষ্ট্যগুলির মধ্যে একটি হল একাধিক অনুরোধ একসাথে এবং অ্যাসিঙ্ক্রোনাসভাবে চালানোর ক্ষমতা।

স্বাভাবিক অবস্থায়, স্ক্রিপ্ট থামে এবং অনুরোধটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করে। এবং যদি আপনাকে অনেকগুলি প্রশ্ন চালানোর প্রয়োজন হয় তবে এটি অনেক সময় নিতে পারে, কারণ ... আপনি ক্রমানুসারে সঞ্চালন করবেন। এই সীমাবদ্ধতা বাইপাস করা যেতে পারে:

// হ্যান্ডলার তৈরি করুন $ch1 = curl_init(); $ch2 = curl_init(); // সেট অপশন curl_setopt($ch1, CURLOPT_URL, "http://lxr.php.net/"); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch2, CURLOPT_HEADER, 0); // একাধিক cURL হ্যান্ডেল তৈরি করুন $mh = curl_multi_init(); // হ্যান্ডলার যোগ করুন curl_multi_add_handle($mh,$ch1); curl_multi_add_handle($mh,$ch2); $চলমান = শূন্য; // এক্সিকিউট রিকোয়েস্ট করে ( curl_multi_exec($mh, $running); ) যখন ($running > 0); // সম্পদ খালি করুন curl_multi_remove_handle($mh, $ch1); curl_multi_remove_handle($mh, $ch2); curl_multi_close($mh);

ধারণাটি হল আপনি একাধিক কার্ল হ্যান্ডেল তৈরি করতে পারেন, একটি মাল্টি-হ্যান্ডেলের অধীনে তাদের একত্রিত করতে পারেন এবং অ্যাসিঙ্ক্রোনাসভাবে চালাতে পারেন।

প্রথমত, সবকিছু একটি নিয়মিত কার্ল অনুরোধের মতোই - একটি বর্ণনাকারী তৈরি করা হয়েছে ( curl_init() ), পরামিতি সেট করা হয় ( curl_setopt() ) এর পরে, একটি মাল্টি-ডেসক্রিপ্টর তৈরি করা হয় ( curl_multi_init() ) এবং পূর্বে তৈরি করা নিয়মিত বর্ণনাকারী যোগ করা হয় ( curl_multi_add_handle() ) সাধারনভাবে curl_exec() কল করার পরিবর্তে, আমরা কল করব curl_multi_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 = অ্যারে(); $active = null; // MySQL এর সাথে সংযোগ করুন যদি (!mysql_connect($db_host, $db_user, $db_pass)) ( die("সংযোগ করা যায়নি: " . mysql_error()); ) যদি (!mysql_select_db($db_name)) ( die("Could) db নির্বাচন করবেন না: " . mysql_error()); ) // $q টেক্সটে লিঙ্ক সহ সমস্ত পোস্ট নিন = "wp_posts থেকে পোস্ট_কন্টেন্ট নির্বাচন করুন যেখানে পোস্ট_কন্টেন্ট লাইক "%href=%" এবং post_status = "প্রকাশ করুন" এবং post_type = "পোস্ট ""; $r = mysql_query($q) অথবা die(mysql_error()); যখন ($d = mysql_fetch_assoc($r)) ( // রেগুলার এক্সপ্রেশন ব্যবহার করে সমস্ত লিঙ্ক সংগ্রহ করুন যদি (preg_match_all("/href=\"(.*?)\"/", $d["post_content"], $maches ), $ excluded_domains)) ( চালিয়ে যান; ) // একসাথে রাখুন $url_list = $url; ) ) ) // পুনরাবৃত্তি অপসারণ করুন $url_list = array_values(array_unique($url_list)); যদি (!$url_list) ( die("চেক করার জন্য কোন URL নেই"); )

স্ক্রিপ্টের এই অংশে, আমরা কেবল ডাটাবেস থেকে সমস্ত বাহ্যিক লিঙ্কগুলি বের করি। আসুন তাদের পরীক্ষা করা যাক:

$mh = curl_multi_init(); // 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); curl_multi_close($mh); echo "== মৃত URLs==\n"; echo implode("\n", $dead_urls)। "\n\n"; echo "==404 URLs==\n"; echo implode("\n", $not_found_urls)। "\n\n"; echo "==কাজ করা URLs==\n"; echo implode("\n", $working_urls); প্রতিধ্বনি "\n\n"; // 9. প্রদত্ত URL ফাংশনের সাথে একটি হ্যান্ডেল যোগ করে add_url_to_multi_handle($mh, $url_list) ( স্ট্যাটিক $index = 0; // যদি এখনও লিঙ্ক থাকে যদি (isset($url_list[$index])) ( // সবকিছু যথারীতি $ ch = curl_init(); // সেট বিকল্পগুলি curl_setopt($ch, CURLOPT_URL, $url_list[$index]); // ফলাফল প্রদর্শনের পরিবর্তে curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // অনুমতি দিন curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // সময় বাঁচাতে শুধুমাত্র হেডার পান curl_setopt($ch, CURLOPT_NOBODY, 1); // মাল্টি-হ্যান্ডেল curl_multi_add_handle($mh, $ch); $index++ ;) )

আসুন কোডটি আরও বিশদে দেখি (সংখ্যাকরণ কোডের মন্তব্যের সাথে মিলে যায়):

  1. আমরা একটি প্রাথমিক সংখ্যক বর্ণনাকারী যোগ করি যাতে থ্রেড দিয়ে সিস্টেমটি ওভারলোড না হয়। সংখ্যাটি $max_connections ভেরিয়েবল দ্বারা নিয়ন্ত্রিত হয়।
  2. $curRunning ভেরিয়েবল চলমান থ্রেডের সংখ্যা সঞ্চয় করে, $running পূর্ববর্তী মান সঞ্চয় করে; যদি তারা অসম হয়ে যায়, তাহলে থ্রেডগুলির একটি কাজ সম্পন্ন করেছে।
  3. আমরা সম্পূর্ণ অনুরোধ সম্পর্কে তথ্য পাই.
  4. সার্ভার থেকে কোন প্রতিক্রিয়া না থাকলে, লিঙ্কটি কাজ করছে না।
  5. সার্ভারের প্রতিক্রিয়া হল 404।
  6. অন্যথায় লিঙ্ক কাজ করে।
  7. অনুরোধটি সম্পন্ন হয়েছে, আমরা সম্পদ প্রকাশ করি।
  8. মাল্টি বর্ণনাকারীতে একটি নতুন URL যোগ করা যাক।
  9. ফাংশন add_url_to_multi_handle() মাল্টি-ডেসক্রিপ্টরে প্রদত্ত URL-এর সাথে একটি নতুন হ্যান্ডেল যোগ করে।

স্ক্রিপ্ট রান করা যাক:

মৃত URLs== xample1234.com/ ==404 URLs== www.google.com/dsfasdfafd ==ওয়ার্কিং URLs== ru.php.net/manual/ru/function.time.php www.cssbuttongenerator.com/ csslint. net/ 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_Capabilities code.google.com/p/google-api-php-client/wiki/OAuth2#Google_APIs_Console jplayer.org/code.google.com/p/google-api -php-client/ developers.google.com/+/ accounts.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 গুণ বৃদ্ধি পায়। সার্ভারের প্রতিক্রিয়ার বিষয়বস্তু পেতে, ফাংশনটি ব্যবহার করুন curl_multi_getcontent($ch) , যেখানে $ch থেকে প্রাপ্ত একটি বর্ণনাকারী curl_multi_info_read() .

পিএইচপি-তে অন্যান্য কার্ল বৈশিষ্ট্য

HTTP প্রমাণীকরণ

HTTP অনুরোধের প্রমাণীকরণের প্রয়োজন হলে, নিম্নলিখিত কোড ব্যবহার করুন:

$url = "http://www.somesite.com/members/"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNট্রান্সফার, 1); // ব্যবহারকারীর নাম এবং পাসওয়ার্ড পাঠান curl_setopt($ch, CURLOPT_USERPWD, "myusername:mypassword"); // যদি পুনঃনির্দেশের অনুমতি দেওয়া হয় curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1) রিডাইরেক্ট করার পরে cURL পাসওয়ার্ড পাঠাবে; $output = curl_exec($ch); curl_close($ch);

FTP এর মাধ্যমে আপলোড করুন

FTP এর সাথে কাজ করার জন্য PHP এর নিজস্ব লাইব্রেরি আছে, কিন্তু আপনি cURL ব্যবহার করতে পারেন:

// ফাইল পড়ুন $file = fopen("/path/to/file", "r"); // url-এ ইতিমধ্যেই প্রয়োজনীয় ডেটা $url = "ftp://username: [ইমেল সুরক্ষিত]:21/path/to/new/file"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // বিকল্পগুলি curl_setopt($ch, CURLOPT_UPLOAD, 1); curl_setopt($ch, CURLOPT_INFILE, $fp); curl_setopt($ch, CURLOPT_INFILESIZE, filesize("/path/to/file")); curl_setopt($ch, CURLOPT_FPASCII, 1); $output = curl_exec($ ch); curl_close($ch);

একটি প্রক্সি ব্যবহার করে

একটি নির্দিষ্ট প্রক্সির মাধ্যমে অনুরোধ করা যেতে পারে:

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://www.example.com"); curl_setopt($ch, CURLOPT_RETURNট্রান্সফার, 1); // প্রক্সি ঠিকানা curl_setopt($ch, CURLOPT_PROXY, "11.11.11.11:8080"); // যদি অনুমোদনের প্রয়োজন হয় curl_setopt($ch, CURLOPT_PROXYUSERPWD,"user:pass"); $output = curl_exec($ch); curl_close($ch);

কলব্যাক ফাংশন

অনুরোধটি চলাকালীন এটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা না করে কলব্যাক ব্যবহার করা সম্ভব। উদাহরণস্বরূপ, যখন সার্ভার প্রতিক্রিয়া ডাউনলোড করা হচ্ছে, আমরা সম্পূর্ণ ডাউনলোডের জন্য অপেক্ষা না করে ইতিমধ্যে প্রাপ্ত ডেটা ব্যবহার করতে পারি।

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://example.com"); curl_setopt($ch, CURLOPT_WRITEFUNCTION,"progress_function"); curl_exec($ch); curl_close($ch); ফাংশন progress_function($ch,$str) ( echo $str; রিটার্ন strlen($str); )

অনুরোধটি সঠিকভাবে কাজ করার জন্য কলব্যাক ফাংশনটি অবশ্যই স্ট্রিংয়ের দৈর্ঘ্য ফিরিয়ে দেবে।

প্রতিবার সার্ভার প্রতিক্রিয়ার পরবর্তী অংশ প্রাপ্ত হলে, একটি কলব্যাক কল করা হবে।

উপসংহার

এই নিবন্ধে, আমরা পিএইচপি-তে কার্এল-এর উন্নত বৈশিষ্ট্যগুলি দেখেছি। পরের বার আপনাকে URL অনুরোধ করতে হবে, cURL ব্যবহার করুন।

আমাদের প্রায়ই ইন্টারনেট থেকে বিভিন্ন ফাইল ডাউনলোড করতে হয়, যেমন এক্সিকিউটেবল প্রোগ্রাম ফাইল, স্ক্রিপ্ট ফাইল, সোর্স আর্কাইভ। কিন্তু এটা সবসময় ব্রাউজারের মাধ্যমে করার দরকার নেই। অনেক পরিস্থিতিতে টার্মিনালের মাধ্যমে সমস্ত ক্রিয়া সম্পাদন করা অনেক সহজ। কারণ এইভাবে আপনি প্রক্রিয়াটি স্বয়ংক্রিয় করতে পারেন। অন্যদিকে, ওয়েবমাস্টারদের সময়ে সময়ে ওয়েবসাইট অ্যাক্সেসিবিলিটি পরীক্ষা করতে হয়, প্রেরিত এবং প্রাপ্ত হেডার পরীক্ষা করতে হয় এবং আরও অনেক কিছু।

এই ধরনের সমস্যা এবং একটি অনুরূপ পরিসরের সমস্যা সমাধান করতে, আপনি কার্ল ইউটিলিটি ব্যবহার করতে পারেন। এটি আপনাকে অনেক বিস্তৃত সমস্যার সমাধান করতে দেয়, এমনকি সাইটে ব্যবহারকারীর ক্রিয়াকলাপ অনুকরণ করা সহ। এই নিবন্ধে আমরা কিভাবে কার্ল ব্যবহার করতে হবে, এটি কি এবং কেন এই প্রোগ্রাম প্রয়োজন তা দেখব।

আসলে, কার্ল লিনাক্স বা উইন্ডোজের জন্য একটি কমান্ড লাইন ইউটিলিটির চেয়ে বেশি কিছু। এটি লাইব্রেরির একটি সেট যা ইউআরএল পৃষ্ঠাগুলির সাথে কাজ করার এবং ফাইল স্থানান্তর করার মৌলিক ক্ষমতাগুলি বাস্তবায়ন করে৷ লাইব্রেরি প্রোটোকলগুলির সাথে কাজ করতে সহায়তা করে: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, টেলনেট, DICT, LDAP, পাশাপাশি POP3, IMAP এবং SMTP। পৃষ্ঠাগুলিতে ব্যবহারকারীর ক্রিয়াকলাপ এবং ইউআরএল সহ অন্যান্য ক্রিয়াকলাপগুলি অনুকরণ করার জন্য এটি দুর্দান্ত৷

কার্ল লাইব্রেরির জন্য সমর্থন বিভিন্ন প্রোগ্রামিং ভাষা এবং প্ল্যাটফর্মে যোগ করা হয়েছে। কার্ল ইউটিলিটি এই লাইব্রেরির জন্য একটি স্বাধীন মোড়ক। এটি এই উপযোগ যা আমরা এই নিবন্ধে ফোকাস করব।

কার্ল কমান্ড

কার্ল লিনাক্স কমান্ড কীভাবে ব্যবহার করা যেতে পারে তার বর্ণনায় যাওয়ার আগে, আসুন ইউটিলিটি নিজেই এবং এর প্রধান বিকল্পগুলি দেখুন যা আমাদের প্রয়োজন হবে। ইউটিলিটির সিনট্যাক্স খুব সহজ:

$ কার্ল বিকল্প লিঙ্ক

এখন প্রধান বিকল্পগুলি দেখুন:

  • -# - লোড করার সময় একটি সাধারণ অগ্রগতি বার প্রদর্শন করুন;
  • -0 - http 1.0 প্রোটোকল ব্যবহার করুন;
  • -1 - tlsv1 এনক্রিপশন প্রোটোকল ব্যবহার করুন;
  • -2 - sslv2 ব্যবহার করুন;
  • -3 - sslv3 ব্যবহার করুন;
  • -4 - ipv4 ব্যবহার করুন;
  • -6 - ipv6 ব্যবহার করুন;
  • -এ- আপনার USER_AGENT নির্দেশ করুন;
  • -খ- একটি ফাইলে কুকি সংরক্ষণ করুন;
  • -গ- একটি ফাইল থেকে সার্ভারে কুকি পাঠান;
  • -সি- বিরতি পয়েন্ট বা নির্দিষ্ট অফসেট থেকে ফাইল ডাউনলোড করা চালিয়ে যান;
  • -মি- সার্ভার থেকে একটি প্রতিক্রিয়া জন্য সর্বোচ্চ অপেক্ষা সময়;
  • -d- POST পদ্ধতি ব্যবহার করে ডেটা পাঠান;
  • -ডি- সার্ভার দ্বারা একটি ফাইলে ফেরত হেডার সংরক্ষণ করুন;
  • -ই- ব্যবহারকারী কোন সাইট থেকে এসেছে তা নির্দেশ করে Referer-uri ক্ষেত্র সেট করুন;
  • -ই- একটি বহিরাগত SSL শংসাপত্র ব্যবহার করুন;
  • -চ- ত্রুটি বার্তা প্রদর্শন করবেন না;
  • -এফ- একটি ফর্ম আকারে তথ্য পাঠান;
  • -জি- যদি এই বিকল্পটি সক্রিয় করা থাকে, তাহলে -d বিকল্পে নির্দিষ্ট করা সমস্ত ডেটা GET পদ্ধতি ব্যবহার করে প্রেরণ করা হবে;
  • -এইচ- সার্ভারে শিরোনাম স্থানান্তর;
  • -আমি- শুধুমাত্র HTTP শিরোনাম গ্রহণ করুন এবং সমগ্র পৃষ্ঠার বিষয়বস্তু উপেক্ষা করুন;
  • -জে- একটি ফাইল থেকে কুকি পড়ুন এবং পাঠান;
  • -জে- অনুরোধ থেকে শিরোনাম অপসারণ;
  • -এল- গ্রহণ এবং পুনর্নির্দেশ প্রক্রিয়া;
  • -s- অবস্থান ব্যবহার করে সর্বোচ্চ সংখ্যক পুনর্নির্দেশ;
  • -ও- একটি ফাইলে পৃষ্ঠার সামগ্রী আউটপুট;
  • -ও- সার্ভারে পৃষ্ঠা বা ফাইলের নাম সহ একটি ফাইলে সামগ্রী সংরক্ষণ করুন;
  • -পি- একটি প্রক্সি ব্যবহার করুন;
  • --প্রোটো- ব্যবহার করা প্রোটোকল নির্দেশ করুন;
  • -আর- একটি দূরবর্তী ফাইলের শেষ পরিবর্তনের সময় সংরক্ষণ করুন;
  • -s- ত্রুটি সম্পর্কে ন্যূনতম তথ্য প্রদর্শন করুন;
  • -এস- ত্রুটি বার্তা প্রদর্শন;
  • -টি- সার্ভারে ফাইল আপলোড করুন;
  • -v- সবচেয়ে বিস্তারিত আউটপুট;
  • -y- সর্বনিম্ন ডাউনলোড গতি;
  • -ওয়াই- সর্বাধিক ডাউনলোড গতি;
  • -z- ফাইলটি শুধুমাত্র ডাউনলোড করুন যদি এটি নির্দিষ্ট সময়ের চেয়ে পরে পরিবর্তন করা হয়;
  • -ভি- সংস্করণ প্রদর্শন করুন।

এটি কার্ল লিনাক্সের জন্য সমস্ত বিকল্প নয়, তবে এটি আপনাকে ব্যবহার করতে হবে এমন মৌলিক বিষয়গুলি তালিকাভুক্ত করে।

কিভাবে কার্ল ব্যবহার করবেন?

আমরা কার্ল ইউটিলিটির সাথে কাজ করার তত্ত্বের সাথে সম্পর্কিত সমস্ত কিছু কভার করেছি, এখন অনুশীলনে এগিয়ে যাওয়ার এবং কার্ল কমান্ডের উদাহরণগুলি দেখার সময় এসেছে।

সবচেয়ে সাধারণ কাজ এই. ফাইল ডাউনলোড করা খুবই সহজ। এটি করার জন্য, ফাইলের নাম বা এইচটিএমএল পৃষ্ঠাটি প্যারামিটারের ইউটিলিটিতে পাস করুন:

কার্ল https://raw.githubusercontent.com/curl/curl/master/README.md

কিন্তু এখানে একটি বিস্ময় আপনার জন্য অপেক্ষা করছে: ফাইলের সম্পূর্ণ বিষয়বস্তু স্ট্যান্ডার্ড আউটপুটে পাঠানো হবে। যেকোনো ফাইলে এটি লিখতে ব্যবহার করুন:

curl -o readme.txt https://raw.githubusercontent.com/curl/curl/master/README.md

এবং আপনি যদি সার্ভারের ফাইলের মতো ফলাফলের ফাইলটির নামকরণ করতে চান তবে -O বিকল্পটি ব্যবহার করুন:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md

curl -# -C - -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

প্রয়োজনে, আপনি একটি কমান্ডের সাহায্যে বেশ কয়েকটি ফাইল ডাউনলোড করতে পারেন:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

আরেকটি জিনিস যা একজন প্রশাসকের জন্য উপযোগী হতে পারে তা হল শুধুমাত্র একটি ফাইল ডাউনলোড করা যদি এটি পরিবর্তন করা হয়:

curl -z 21-Dec-17 https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

গতি সীমা

আপনি ডাউনলোডের গতি প্রয়োজনীয় সীমাতে সীমাবদ্ধ করতে পারেন যাতে -Y বিকল্পটি ব্যবহার করে নেটওয়ার্ক ওভারলোড না হয়:

curl --limit-rate 50K -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

এখানে আপনাকে প্রতি সেকেন্ডে কত কিলোবাইট ডাউনলোড করা যাবে তা উল্লেখ করতে হবে। গতি পর্যাপ্ত না হলে আপনি সংযোগটি বন্ধ করতে পারেন, এটি করতে -Y বিকল্পটি ব্যবহার করুন:

curl -Y 100 -O https://raw.githubusercontent.com/curl/curl/master/README.md

ফাইল স্থানান্তর করা হচ্ছে

curl -T login.txt ftp://speedtest.tele2.net/upload/

অথবা আসুন পরীক্ষা করে দেখি যে ফাইলটি HTTP এর মাধ্যমে পাঠানো হয়েছে; এর জন্য একটি বিশেষ পরিষেবা রয়েছে:

curl -T ~/login.txt http://posttestserver.com/post.php

প্রতিক্রিয়াতে, ইউটিলিটি আপনাকে বলবে আপনি ডাউনলোড করা ফাইলটি কোথায় পাবেন।

পোস্ট ডেটা পাঠানো হচ্ছে

আপনি POST পদ্ধতি ব্যবহার করে শুধুমাত্র ফাইলই নয়, যেকোনো ডেটাও পাঠাতে পারেন। আমি আপনাকে মনে করিয়ে দিই যে এই পদ্ধতিটি বিভিন্ন ফর্মের ডেটা পাঠাতে ব্যবহৃত হয়। এই ধরনের একটি অনুরোধ পাঠাতে, -d বিকল্পটি ব্যবহার করুন। পরীক্ষার জন্য আমরা একই পরিষেবা ব্যবহার করব:

curl -d "field1=val&fileld2=val1"http://posttestserver.com/post.php

আপনি যদি এই জমা দেওয়ার বিকল্পটি নিয়ে খুশি না হন তবে আপনি ফর্মটি জমা দেওয়ার ভান করতে পারেন। এর জন্য একটি বিকল্প আছে -F:

curl -F "password=@pass;type=text/plain" http://posttestserver.com/post.php

এখানে আমরা ফর্মের সাথে পাসওয়ার্ড ক্ষেত্রটিকে প্লেইন টেক্সট হিসাবে পাস করি, একইভাবে আপনি বেশ কয়েকটি প্যারামিটার পাস করতে পারেন।

কুকি পাঠানো এবং গ্রহণ

ব্যবহারকারীর পক্ষ থেকে নির্দিষ্ট তথ্য সঞ্চয় করতে ওয়েবসাইট দ্বারা কুকি ব্যবহার করা হয়। এটি প্রয়োজন হতে পারে, উদাহরণস্বরূপ, প্রমাণীকরণের জন্য। আপনি কার্ল ব্যবহার করে কুকি পাঠাতে এবং গ্রহণ করতে পারেন। একটি ফাইলে প্রাপ্ত কুকি সংরক্ষণ করতে, -c বিকল্পটি ব্যবহার করুন:

curl -c cookie.txt http://posttestserver.com/post.php

তারপরে আপনি কার্ল কুকি ফেরত পাঠাতে পারেন:

curl -b cookie.txt http://posttestserver.com/post.php

হেডার ট্রান্সমিশন এবং বিশ্লেষণ

আমাদের সবসময় পেজের বিষয়বস্তুর প্রয়োজন হয় না। কখনও কখনও শুধুমাত্র শিরোনাম আকর্ষণীয় হতে পারে. শুধুমাত্র তাদের প্রদর্শন করতে -I বিকল্প আছে:

curl -I https://site

এবং -H বিকল্পটি আপনাকে সার্ভারে একাধিক বা তার বেশি পাঠাতে দেয়, উদাহরণস্বরূপ, আপনি If-Modified-Since শিরোনামটি পাস করতে পারেন যাতে পৃষ্ঠাটি পরিবর্তন করা হলেই ফিরে আসে:

কার্ল প্রমাণীকরণ

সার্ভারের যদি HTTP বেসিক বা FTP-এর মতো সাধারণ ধরনের প্রমাণীকরণের প্রয়োজন হয়, তাহলে কার্ল খুব সহজেই এই কাজটি পরিচালনা করতে পারে। প্রমাণীকরণের বিশদ বিবরণ নির্দিষ্ট করতে, কেবল -u বিকল্পে একটি কোলন দ্বারা পৃথক করা নির্দিষ্ট করুন:

curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

HTTP সার্ভারে প্রমাণীকরণ একইভাবে সঞ্চালিত হবে।

একটি প্রক্সি ব্যবহার করে

ফাইল ডাউনলোড করার জন্য আপনার যদি প্রক্সি সার্ভার ব্যবহার করতে হয়, তাহলে সেটাও খুব সহজ। -x বিকল্পে প্রক্সি সার্ভার ঠিকানা উল্লেখ করা যথেষ্ট:

curl -x proxysever.test.com:3128 http://google.co.in

উপসংহার

এই নিবন্ধে, আমরা কীভাবে কার্ল ব্যবহার করতে হয়, কেন এই ইউটিলিটি প্রয়োজন এবং এর প্রধান ক্ষমতাগুলি দেখেছি। তাদের সাথে মিল থাকা সত্ত্বেও, তারা খুব আলাদা। সার্ভারে বিভিন্ন ক্রিয়া বিশ্লেষণ এবং অনুকরণ করার জন্য curl linux কমান্ডটি আরও ডিজাইন করা হয়েছে, যখন wget ফাইল ডাউনলোড এবং সাইট ক্রল করার জন্য আরও উপযুক্ত।

এই নিবন্ধটি cURL এর মতো একটি শক্তিশালী টুল, সেইসাথে পিএইচপি-র জন্য লাইব্রেরি সম্পর্কে কথা বলবে যা এই সরঞ্জামটিতে অ্যাক্সেস সরবরাহ করে - libcurl। এই সব কিসের জন্য? ডেটা ট্রান্সফার প্রোটোকল ব্যবহার করে সার্ভারের সাথে যোগাযোগ করতে, উদাহরণস্বরূপ, http বা ftp। বাকি প্রোটোকলগুলি আমাদের কাছে বিশেষভাবে আকর্ষণীয় নয়; যদি কেউ এই বিষয়ে গভীরভাবে অনুসন্ধান করতে চায়, তবে তাদের ইংরেজি-ভাষা সংস্থানগুলি খনন করতে হবে এবং এই নিবন্ধটিতে ব্যবহারের মৌলিক এবং উদাহরণগুলি থাকবে৷

CURL এবং libcurl ঠিক কি? সাধারণ পয়েন্ট

সুতরাং, libcurl লাইব্রেরি আমাদের সার্ভারে ডেটা প্রেরণ এবং এটি থেকে প্রতিক্রিয়া পাওয়ার ক্ষমতা প্রদান করে। এটা আমাদের কি দেয়? ব্যবহারকারীর আচরণ অনুকরণ করার ক্ষমতা বা! আপনি পরবর্তী পার্সিংয়ের জন্য পৃষ্ঠাগুলির বিষয়বস্তুগুলি পেতে পারেন, আপনি পরিষেবা প্রতিক্রিয়া শিরোনামগুলি পেতে পারেন এবং প্রোগ্রামে সাইটে লগ ইন করতে পারেন, বার্তা পোস্ট করার জন্য স্ক্রিপ্ট তৈরি করতে পারেন (উদাহরণস্বরূপ, টুইটারে বা ফোরামে) বা তথ্য। সবকিছু শুধুমাত্র আপনার কল্পনা দ্বারা সীমাবদ্ধ!

ডেনওয়ারে (ডেনভার) সিআরএল ইনস্টল করা হচ্ছে। কিভাবে libcurl ব্যবহার শুরু করবেন?

আমাদের যা করতে হবে তা হল লাইব্রেরি ইনস্টল করা। আমার স্থানীয় কম্পিউটারে আমি ডেনওয়ার বিল্ড ব্যবহার করি, যেমন বেশিরভাগ নবজাতক ওয়েবমাস্টার, যাদের জন্য নিবন্ধটি তৈরি করা হয়েছে। অভিজ্ঞ ব্যবহারকারীরা যারা স্বাধীনভাবে php+apache+mysql সংমিশ্রণটি ইনস্টল করেন তারা cURL ইনস্টল করতে সক্ষম হবেন, এটি কীভাবে করা হয় তা তাদের ব্যাখ্যা করার জন্য আমার পক্ষে নয়;) এবং আমরা, নতুনরা, এটি সহজ করার জন্য প্রস্তুত-তৈরি সমাধান ব্যবহার করি। অতএব, নিম্নরূপ libcurl ইনস্টল করুন:

  • রেডিমেড এক্সটেনশন প্যাকেজ "PHP5: অতিরিক্ত মডিউল" ডাউনলোড করুন।
  • তদনুসারে, আমরা এটি ইনস্টল করি। কিছু জটিল, একমত :)
  • ফাইলটি নোটপ্যাডে খুলুন (আমি সর্বদা নোটপ্যাড++ সুপারিশ করি): X:/webservers/usr/local/php5/php.ini // যেখানে X আপনার ড্রাইভ যেখানে ওয়েব সার্ভার ইনস্টল করা আছে

    এবং শর্তাবলীর শুরুতে সেমিকোলনটি সরান:

    ;এক্সটেনশন=php_curl.dll

  • আমরা ডেনভার সার্ভার পুনরায় চালু করছি।

প্রস্তুত. লাইব্রেরির কার্যকারিতা পরীক্ষা করতে, আপনি phpinfo() ফাংশনটি কল করতে পারেন এবং সেখানে লাইনটি খুঁজে পেতে পারেন: cURL সমর্থন সক্ষম। আপনার প্রথম বিজয়ের জন্য অভিনন্দন।

CURL এবং প্রথম ধাপের বর্ণনা

টুলের সাথে কাজ শুরু করার জন্য, এটি আরম্ভ করা প্রয়োজন। এটি নিম্নরূপ করা হয়:

$ch = curl_init();

আমরা সিআরএল সেশন ইনিশিয়ালাইজেশন ফাংশন ব্যবহার করেছি। এই ক্ষেত্রে, আপনি এখনই ইউআরএল সেট করতে পারেন, যেমন:

$ch = curl_init("https://site");

এবং আপনি পরে বিকল্পগুলিতে এটি করতে পারেন। যে ক্রমে বিকল্পগুলি ইনস্টল করা হয়েছে তা কোন ব্যাপার না। এটি অন্য ফাংশন দ্বারা করা হয়:

Curl_setopt (রিসোর্স ch, স্ট্রিং বিকল্প, মিশ্র মান)

আমরা ইতিমধ্যেই এই ফাংশনের প্রথম প্যারামিটার তৈরি করেছি, অর্থাৎ রিসোর্স ch, ঠিক উপরে, কিন্তু সেখানে অনেকগুলি বিকল্প এবং মান প্যারামিটার রয়েছে। আমি মনে করি যে আপনার সেগুলি এখানে কপি-পেস্ট করা উচিত নয়, তবে ফাংশনের বিস্তারিত বিবরণের একটি লিঙ্ক দিন, আমি আশা করি কেউ বিরক্ত হবে না: curl_setopt।

আমি একটি উদাহরণ হিসাবে একটি URL ব্যবহার করে বিকল্প সেট করার একটি উদাহরণ দেব:

$url = "https://site"; curl_setopt($ch, CURLOPT_URL,$url);

সেটিং বিকল্পগুলির আরও কয়েকটি উদাহরণ: আসুন পৃষ্ঠাটি না পেয়ে সার্ভার প্রতিক্রিয়া শিরোনামটি পান:

Curl_setopt($ch, CURLOPT_HEADER, 1); // শিরোনাম পড়ুন curl_setopt($ch, CURLOPT_NOBODY, 1); // বডি ছাড়া শুধুমাত্র হেডার পড়ুন

সুতরাং, আমরা সেশন শুরু করেছি, আমাদের প্রয়োজনীয় পরামিতিগুলি সেট করেছি, এখন আমরা ফলাফলের অনুরোধটি কার্যকর করি, সেশন বন্ধ করে ফলাফল প্রদর্শন করি:

$result = curl_exec($ch); curl_close($ch); echo $result;

ফলস্বরূপ, আমরা libcurl লাইব্রেরি ব্যবহার করার জন্য আমাদের প্রথম সম্পূর্ণ কার্যকর উদাহরণ পাই:

$ch = curl_init(); $url = "https://site"; curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_HEADER, 1); // শিরোনাম পড়ুন curl_setopt($ch, CURLOPT_NOBODY, 1); // বডি ছাড়া শুধুমাত্র হেডার পড়ুন $result = curl_exec($ch); curl_close($ch); echo $result;

এটি কীভাবে কাজ করে, আমি আশা করি, এটি পরিষ্কার, কারণ আমরা প্রতিটি পদক্ষেপকে আলাদাভাবে দেখেছি :) ফলস্বরূপ, আমরা সার্ভার থেকে একটি HTTP প্রতিক্রিয়া শিরোনাম পেয়েছি, যা আমরা অবশ্যই নীচের বিশ্লেষণ করব যাতে এর মধ্যে মিথস্ক্রিয়ার সমস্ত স্তরগুলি আরও ভালভাবে বোঝা যায় ব্রাউজার এবং সার্ভার:

HTTP/1.1 200 ওকে সার্ভার: nginx/1.2..php 1

কল্পিত! আমরা সার্ভার থেকে প্রতিক্রিয়া শিরোনাম পেয়েছি এবং লাইব্রেরিটি কার্যকরভাবে পরীক্ষা করেছি। এটা কিভাবে আমাদের জন্য দরকারী? কারণ এখন আপনি cURL এর সাথে কাজ করার সময় কর্মের ক্রমটি মোটামুটিভাবে কল্পনা করতে পারেন:

  • সেশন শুরু করুন (curl_init)
  • আমাদের প্রয়োজনীয় বিকল্পগুলি সেট করুন (curl_setopt)
  • প্রাপ্ত অনুরোধ কার্যকর করুন (curl_exec)
  • সেশন শেষ করুন (curl_close)

HTTP অনুরোধ শিরোনাম গঠন

উদাহরণস্বরূপ, আমি ya.ru পৃষ্ঠায় ফিরেছি এবং উত্পন্ন ব্রাউজার অনুরোধ এবং সার্ভার থেকে প্রাপ্ত প্রতিক্রিয়া দেখেছি। এখানে তারা:
অনুরোধ
GET/HTTP/1.1 - আমরা / এ পৃষ্ঠাটি পেতে চেষ্টা করছি, অর্থাৎ ফোল্ডারের রুটে অবস্থিত প্রধান পৃষ্ঠাটি। আমরা প্রোটোকল সংস্করণ 1.1 ব্যবহার করি।
ব্যবহারকারী-এজেন্ট: Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 সংস্করণ/12.14— আমরা সার্ভারে নিজেদের পরিচয় করিয়ে দিই, আমরা অপেরা ব্রাউজার।
হোস্ট: ya.ru — অনুরোধ করা সম্পদের ডোমেন নাম।
স্বীকার করুন: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1— গ্রহণযোগ্য রিসোর্স ফরম্যাটের তালিকা।
স্বীকার-ভাষা: ru-RU,ru;q=0.9,en;q=0.8— সমর্থিত ভাষার তালিকা।
স্বীকার-এনকোডিং: জিজিপ, ডিফ্লেট- সমর্থিত এনকোডিং পদ্ধতি।
কুকি: yandexuid=ХХХХХ - কুকিজ, যদি প্রয়োজন হয়।
সংযোগ: কিপ-অ্যালাইভ - অনুগ্রহ করে সংযোগ বিচ্ছিন্ন করবেন না এবং যোগাযোগে থাকুন।
উত্তর
HTTP/1.1 200 ঠিক আছে - আমরা কোড 200 সহ একটি প্রতিক্রিয়া পাই, যার অর্থ সবকিছু ঠিক আছে৷
সার্ভার: nginx - সার্ভারটি নিজেকে পরিচয় করিয়ে দিয়েছে - এটি nginx।
তারিখ: রবিবার, 10 মার্চ 2013 14:10:50 GMT- সার্ভারে বর্তমান তারিখ এবং সময়।
বিষয়বস্তুর প্রকার: পাঠ্য/এইচটিএমএল; charset=UTF-8- বিষয়বস্তুর ধরন এবং এনকোডিং।
সংযোগ: বন্ধ - সার্ভার আমাদের সাথে একটি স্থায়ী সংযোগ বজায় রাখতে চায় না, তাই এটি অবিলম্বে এটি বন্ধ করে দেয়। পরবর্তী অনুরোধের জন্য একটি নতুন সংযোগ স্থাপন করা হবে।
ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে, নো-স্টোর, সর্বোচ্চ-বয়স = 0, অবশ্যই পুনঃপ্রমাণ করতে হবে- ক্যাশিং ব্যবস্থাপনা। এই ক্ষেত্রে এটি নিষ্ক্রিয় করা হয়।
মেয়াদ শেষ হবে: রবিবার, 10 মার্চ 2013 14:10:50 GMT— অধিবেশনের প্রত্যাশিত মেয়াদ শেষ হওয়ার তারিখ। আমাদের ক্ষেত্রে, এটি খোলার সময়ের সাথে মিলে যায়, যেহেতু সার্ভারটি অবিলম্বে প্রক্রিয়াকরণের পরে এটি বন্ধ করে দেয়।
শেষ-সংশোধিত: রবিবার, 10 মার্চ 2013 14:10:50 GMT- শেষ পরিবর্তনের সময়।
বিষয়বস্তু-এনকোডিং: gzip — তথ্য এনকোডিংয়ের পদ্ধতি।
HTTP অনুরোধ শিরোনামে পাওয়া যায় এমন সমস্ত প্যারামিটারের একটি সম্পূর্ণ তালিকা উইকিপিডিয়াতে পাওয়া যাবে।
আপনার ব্রাউজার এবং ওয়েব সার্ভার একে অপরের সাথে কীভাবে যোগাযোগ করে সে সম্পর্কে এখন আপনার মোটামুটি ধারণা রয়েছে। এটা জানা ও বোঝার জন্য খুবই উপযোগী, কারণ আমরা libcurl লাইব্রেরি ব্যবহার করে ব্রাউজার অ্যাকশন অনুকরণ করার চেষ্টা করব। এগিয়ে যান.

লাইব্রেরির সাথে কাজ করার উদাহরণ

আমি বিশ্বাস করি যে কিছু সাধারণ পয়েন্ট ইতিমধ্যে পরিষ্কার হওয়ার পরে এবং সবকিছু পরিষ্কার বলে মনে হচ্ছে, তারপরে অনুশীলনে এগিয়ে যাওয়ার এবং উদাহরণ ব্যবহার করে আপনার দক্ষতাকে আরও উন্নত করার সময় এসেছে। ব্যক্তিগতভাবে, অনুশীলনে সবকিছু চেষ্টা করার জন্য আমার হাত সবসময় চুলকায় :)

যেহেতু cURL পার্সারদের জন্য খুব ভালো, আসুন এর ঠিকানা দ্বারা পৃষ্ঠা কোড পাওয়ার ফাংশন বিবেচনা করা যাক। এই ক্ষেত্রে, আউটপুটটি শিরোনাম, পৃষ্ঠার বিষয়বস্তু এবং কিছু ভুল হলে ত্রুটি কোড সহ একটি অ্যারে হবে।

ফাংশন get_web_page($url) ( $uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNNS); // ওয়েব পৃষ্ঠা curl_setopt($ch, CURLOPT_HEADER, 0) ফেরত দেয়; // শিরোনাম দেয় না curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // অনুসরণ করে রিডাইরেক্ট curl_setopt($ch, CURLOPT_ENCODING, ""); // প্রক্রিয়াগুলি সমস্ত এনকোডিং curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // useragent curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // সংযোগের সময়সীমা curl_setopt($ch, CURLOPT_TIMEOUT, 120); // প্রতিক্রিয়া টাইমআউট (CURLOPT_TIMEOUT, 120) , 10); // 10 তম পুনঃনির্দেশের পরে থামুন $content = curl_exec($ch); $err = curl_errno($ch); $errmsg = curl_error($ch); $header = curl_getinfo($ch); curl_close($ ch); $header["errno"] = $err; $header["errmsg"] = $errmsg; $header["content"] = $content; ফেরত $header; )

ইনপুট পরামিতি:
url — পৃষ্ঠা বা সাইটের ঠিকানা।
আউটপুট প্যারামিটার মান (তিনটি উপাদান সহ অ্যারে):
শিরোনাম ['errno'] - যদি কিছু ভুল হয়ে থাকে, এখানে একটি ত্রুটি কোড থাকবে।
হেডার['errmsg'] – এরর টেক্সট এখানে উপস্থিত হবে।
শিরোনাম ['সামগ্রী'] - প্রকৃত পৃষ্ঠা\ফাইল\চিত্র, ইত্যাদি।

আমরা ফাংশন ব্যবহার করি, উদাহরণস্বরূপ, এইরকম:

$result = get_web_page("https://ya.ru"); যদি (($result["errno"] != 0)||($result["http_code"] != 200)) ( echo $result["errmsg"]; ) অন্য ( $page = $result["content "]; প্রতিধ্বনি $পৃষ্ঠা;)

সবকিছু ত্রুটি ছাড়াই হওয়া উচিত এবং আপনি $পৃষ্ঠা ভেরিয়েবলে পৃষ্ঠা কোড পাবেন। আমরা যদি অস্তিত্বহীন পৃষ্ঠা yaaaaaaaaaaa.ru পেতে চেষ্টা করি, আমরা ত্রুটিটি পাব:

হোস্ট সমাধান করা যায়নি: yaaaaaaaaaaa.ru; হোস্ট পাওয়া যায় না

সবকিছু সঠিকভাবে এবং সুন্দরভাবে প্রক্রিয়া করা হয় :)
তারপরে আপনি পৃষ্ঠা কোড দিয়ে যা চান তা করতে পারেন, উদাহরণস্বরূপ, এটিকে রেগুলার এক্সপ্রেশন দিয়ে পার্স করুন। কিন্তু যে সব পরবর্তী পাঠে, কিন্তু আপাতত এখানে থামা যাক.

আপনার ব্রাউজারে জাভাস্ক্রিপ্ট ব্লক করা আছে। সাইটে কাজ করার জন্য জাভাস্ক্রিপ্ট সক্রিয় করুন!

কার্ল

পিএইচপি libcurl সমর্থন করে, ড্যানিয়েল স্টেনবার্গ দ্বারা তৈরি একটি লাইব্রেরি যা বিভিন্ন ধরণের সার্ভারের সাথে সংযোগ করা এবং বিভিন্ন প্রোটোকল ব্যবহার করে সম্ভব করে তোলে।
libcurl বর্তমানে http, https, ftp, gopher, telnet, dict, ফাইল এবং ldap প্রোটোকল সমর্থন করে।
libcurl HTTPS সার্টিফিকেট, HTTP POST, HTTP PUT, FTP আপলোড (এটি ftp PHP এক্সটেনশন দিয়েও করা যেতে পারে), HTTP ফর্ম-ভিত্তিক আপলোড, প্রক্সি, কুকি এবং ব্যবহারকারী+পাসওয়ার্ড প্রমাণীকরণ সমর্থন করে।

এই ফাংশনগুলি পিএইচপি 4.0.2 এ চালু করা হয়েছিল।

curl_init

curl_init - একটি CURL সেশন শুরু করে।

বর্ণনা

সম্পদ curl_init()

ফাংশন curl_init()একটি নতুন সেশন শুরু করে এবং , এবং ফাংশনে ব্যবহারের জন্য একটি CURL হ্যান্ডেল ফেরত দেয়। ঐচ্ছিক প্যারামিটার হলে urlপ্রদান করা হয়, তাহলে CURLOPT_URL বিকল্পটি এই প্যারামিটারের মান পাবে। আপনি এটি ব্যবহার করে ম্যানুয়ালি ইনস্টল করতে পারেন।

curl_setopt

curl_setopt - CURL স্থানান্তর/স্থানান্তরের জন্য বিকল্পগুলি সেট করে।

বর্ণনা

bool curl_setopt(রিসোর্স ch, স্ট্রিং বিকল্প, মিশ্র মান)

ফাংশন curl_setopt()প্যারামিটার দ্বারা চিহ্নিত CURL সেশনের জন্য বিকল্পগুলি সেট করে সিএইচ. প্যারামিটার বিকল্পআপনি সেট করতে চান বিকল্প, এবং মানএই বিকল্প মান বিকল্প .

প্যারামিটার মাননিম্নলিখিত বিকল্পগুলির জন্য অবশ্যই দীর্ঘ হতে হবে (পরামিটার দ্বারা নির্দিষ্ট করা হয়েছে বিকল্প):

  • CURLOPT_INFILESIZE: আপনি যদি একটি দূরবর্তী সাইটে একটি ফাইল আপলোড করছেন, তাহলে এই বিকল্পটি PHP কে প্রত্যাশিত ইনফাইল আকারটি জানাতে ব্যবহার করা উচিত৷
  • CURLOPT_VERBOSE: আপনি যদি CURL সমস্ত কর্মের রিপোর্ট করতে চান তাহলে এই বিকল্পটিকে একটি অ-শূন্য মানতে সেট করুন৷
  • CURLOPT_HEADER: যদি আপনি শিরোনামটি আউটপুটে অন্তর্ভুক্ত করতে চান তবে এই বিকল্পটিকে একটি অ-শূন্য মানতে সেট করুন।
  • CURLOPT_NOPROGRESS: আপনি যদি পিএইচপি একটি CURL স্থানান্তর অগ্রগতি সূচক প্রদর্শন করতে না চান তবে এই বিকল্পটিকে একটি অ-শূন্য মানতে সেট করুন। (PHP স্বয়ংক্রিয়ভাবে এই বিকল্পটিকে একটি অ-শূন্য মানতে সেট করে; ডিবাগ করার সময় আপনাকে শুধুমাত্র এটি পরিবর্তন করতে হবে।)
  • CURLOPT_NOBODY: আপনি যদি আউটপুটে বডি অন্তর্ভুক্ত করতে না চান তবে এই বিকল্পটিকে একটি অ-শূন্য মানতে সেট করুন।
  • CURLOPT_FAILONERROR: এই বিকল্পটিকে একটি নন-জিরো ভ্যালুতে সেট করুন যদি আপনি চান যে পিএইচপি প্রত্যাবর্তন করা HTTP কোডটি 300-এর বেশি হলে নিঃশব্দে প্রস্থান করে।
  • CURLOPT_UPLOAD: আপনি যদি পিএইচপি ফাইলটি আপলোডের জন্য প্রস্তুত করতে চান তবে এই বিকল্পটিকে একটি অ-শূন্য মানতে সেট করুন।
  • CURLOPT_POST: আপনি যদি পিএইচপি নিয়মিত HTTP POST সঞ্চালন করতে চান তবে এই বিকল্পটিকে একটি অ-শূন্য মানতে সেট করুন। এই পোস্টটি সাধারণ ফর্ম অ্যাপ্লিকেশন/x-www-form-urlencoded, যা সাধারণত HTML ফর্ম দ্বারা ব্যবহৃত হয়৷
  • শুধুমাত্র CURLOPT_FTPLIST: এই বিকল্পটিকে একটি অ-শূন্য মান সেট করুন এবং PHP FTP ডিরেক্টরির নাম তালিকাভুক্ত করবে।
  • CURLOPT_FTPAPPEND: এই অপশনটিকে একটি নন-জিরো ভ্যালুতে সেট করুন এবং পিএইচপি এটিকে ওভাররাইট করার পরিবর্তে রিমোট ফাইলে যুক্ত করবে।
  • CURLOPT_NETRC: এই বিকল্পটিকে একটি অ-শূন্য মানতে সেট করুন এবং PHP আপনার ~./netrc ফাইলটি স্ক্যান করবে যাতে আপনি যে দূরবর্তী সাইটে সংযোগ করছেন তার জন্য আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ড খুঁজে পেতে পারেন।
  • CURLOPT_FOLLOWLOCATION: সার্ভার একটি HTTP শিরোনামের অংশ হিসাবে যেকোন "অবস্থান: " শিরোনাম পাঠায় তা অনুসরণ করতে এই বিকল্পটিকে একটি অ-শূন্য মানতে সেট করুন (মনে রাখবেন যে এটি পুনরাবৃত্তি, পিএইচপি পাঠানো সমস্ত "অবস্থান: " -হেডার" অনুসরণ করবে। )
  • CURLOPT_PUT: এই অপশনটিকে একটি নন-জিরো ভ্যালুতে সেট করুন HTTP ফাইলটি রাখুন। PUT-এর জন্য ফাইলটি অবশ্যই CURLOPT_INFILE এবং CURLOPT_INFILESIZE ব্যবহার করে সেট করতে হবে৷
  • CURLOPT_MUTE: এই বিকল্পটিকে একটি নন-জিরো ভ্যালুতে সেট করুন এবং PHP সিআরএল ফাংশনের ক্ষেত্রে লুকিয়ে কাজ করবে।
  • CURLOPT_TIMEOUT: একটি প্যারামিটার হিসাবে একটি দীর্ঘ পাস করুন যাতে সেকেন্ডে সর্বাধিক সময় থাকে যা আপনি CURL ফাংশনগুলি চালানোর অনুমতি দেন৷
  • CURLOPT_CONNECTTIMEOUT: একটি প্যারামিটার হিসাবে একটি দীর্ঘ পাস করুন যাতে সর্বাধিক সময় থাকে, সেকেন্ডে, যা সংযোগ করার চেষ্টা করার সময় আপনি অপেক্ষা করার অনুমতি দেন। চিরতরে অপেক্ষা করতে 0 ব্যবহার করুন।
  • CURLOPT_LOW_SPEED_LIMIT: একটি প্যারামিটার হিসাবে একটি দীর্ঘ পাস করুন যাতে স্থানান্তর গতি থাকে, প্রতি সেকেন্ডে বাইটে, যার নীচে স্থানান্তরটি চালানো আবশ্যক CURLOPT_LOW_SPEED_TIME, সেকেন্ডের মধ্যে, PHP এর জন্য এটিকে খুব ধীর বলে বিবেচনা করে এবং এটি বাতিল করে।
  • CURLOPT_LOW_SPEED_TIME: একটি প্যারামিটার হিসাবে একটি দীর্ঘ পাস করুন যাতে সেকেন্ডের নিচে সময় থাকে যার মধ্যে PHP-এর জন্য CURLOPT_LOW_SPEED_LIMIT চালানোর সময় স্থানান্তরটি অবশ্যই চলতে হবে যাতে এটিকে খুব ধীর বলে বিবেচনা করা যায় এবং এটি বাতিল করা হয়।
  • CURLOPT_RESUME_FROM: একটি প্যারামিটার হিসাবে দীর্ঘ পাস করুন যাতে বাইট অফসেট থাকে যেখানে স্থানান্তর শুরু করা উচিত।
  • CURLOPT_SSLVERSION: ব্যবহার করার জন্য SSL সংস্করণ রয়েছে এমন একটি প্যারামিটার হিসাবে একটি দীর্ঘ পাস করুন (2 বা 3)। ডিফল্টরূপে, পিএইচপি নিজেই এটি নির্ধারণ করার চেষ্টা করে, যদিও কিছু ক্ষেত্রে আপনাকে এটি ম্যানুয়ালি সেট করতে হবে।
  • CURLOPT_SSL_VERIFYHOST: দীর্ঘ পাস করুন যদি একটি SSL হ্যান্ডশেকে পিয়ার সার্টিফিকেটের সাধারণ নাম CURL চেক করে। 1-এর মান নির্দেশ করে যে আমাদের একটি সাধারণ/সাধারণ নামের অস্তিত্ব পরীক্ষা করা উচিত, 2-এর মান নির্দেশ করে যে এটি প্রদত্ত হোস্টনামের সাথে মেলে কিনা তা নিশ্চিত করা উচিত।
  • CURLOPT_TIMECONDITION: একটি প্যারামিটার হিসাবে একটি দীর্ঘ পাস করুন যা নির্ধারণ করে যে CURLOPT_TIMEVALUE কীভাবে আচরণ করা হয়৷ আপনি এই প্যারামিটারটিকে TIMECOND_IFMODSINCE বা TIMECOND_ISUNMODSINCE এ সেট করতে পারেন৷ এটি শুধুমাত্র HTTP এর জন্য কাজ করে।
  • CURLOPT_TIMEVALUE: একটি প্যারামিটার হিসাবে একটি দীর্ঘ পাস করুন, যা 1 জানুয়ারী, 1970 থেকে সেকেন্ডে সময়। এই সময়টি CURLOPT_TIMEVALUE বিকল্প দ্বারা নির্দিষ্ট করা হিসাবে ব্যবহৃত হয়, অথবা ডিফল্ট TIMECOND_IFMODSINCE ব্যবহার করা হবে।
  • CURLOPT_RETURN ট্রান্সফার: একটি অ-শূন্য মান পাস করুন যদি আপনি CURL সরাসরি প্রিন্ট করার পরিবর্তে সরাসরি প্রাপ্ত তথ্য ফেরত দিতে চান।

প্যারামিটার মাননিম্নলিখিত প্যারামিটার মানগুলির জন্য একটি স্ট্রিং হতে হবে বিকল্প :

নিম্নলিখিত বিকল্পগুলি একটি ফাইল বর্ণনাকারীর প্রত্যাশা করে, যা ফাংশন ব্যবহার করে প্রাপ্ত হয় fopen() :

  • CURLOPT_FILE: ফাইল যেখানে আপনার স্থানান্তরের আউটপুট স্থাপন করা উচিত, ডিফল্টরূপে এটি STDOUT।
  • CURLOPT_INFILE: যে ফাইল থেকে আপনার ট্রান্সফার ইনপুট আসে।
  • CURLOPT_WRITEHEADER: আউটপুটের হেডার অংশ রেকর্ড করার জন্য ফাইল।
  • CURLOPT_STDERR: stderr এর পরিবর্তে ত্রুটি রেকর্ড করার জন্য ফাইল।

প্যারামিটার মান লং রাইট_কলব্যাক (রিসোর্স সিএইচ, স্ট্রিং ডেটা)( ... রিটার্ন স্ট্রলেন($ডেটা);) বিকল্প :

  • CURLOPT_WRITEFUNCTION: .
  • CURLOPT_HEADERFUNCTION: .

প্যারামিটার মাননিম্নলিখিত ফর্ম একটি ফাংশন হতে হবে স্ট্রিং রিড_কলব্যাক (রিসোর্স সিএইচ, রিসোর্স এফডি, লং লেন্থ)()নিম্নলিখিত পরামিতি মানগুলির জন্য বিকল্প :

  • CURLOPT_READFUNCTION: .

curl_exec

curl_exec - একটি CURL সেশন নির্বাহ করে।

বর্ণনা

bool curl_exec(সম্পদ ch)

আপনি একটি CURL সেশন শুরু করার পরে এই ফাংশনটি কল করা উচিত এবং সেই সেশনের জন্য সমস্ত বিকল্প ইতিমধ্যে সেট করা হয়েছে৷ এর উদ্দেশ্য হল একটি পূর্বনির্ধারিত CURL সেশন চালানো (প্যারামিটারে নির্দিষ্ট করা সিএইচ).

curl_close

curl_close - CURL সেশন বন্ধ করে।

বর্ণনা

অকার্যকর curl_close(সম্পদ ch)

এই ফাংশনটি CURL সেশন বন্ধ করে এবং সমস্ত সংস্থান প্রকাশ করে। CURL হ্যান্ডেল সিএইচএছাড়াও মুছে ফেলা হয়।

curl_ernno

curl_errno - শেষ ত্রুটি সংখ্যা ধারণকারী একটি পূর্ণসংখ্যা প্রদান করে।

বর্ণনা

উদাহরণ 1: একটি নতুন CURL সেশন শুরু করা এবং একটি ওয়েব পৃষ্ঠা পুনরুদ্ধার করা।
উদাহরণ 2: example.com পেতে PHP-এর CURL মডিউল ব্যবহার করে
উদাহরণ 3: PHP-এর CURL ব্যবহার করে ইউআরএল অ্যাক্সেসযোগ্যতা পরীক্ষা করা হচ্ছে
উদাহরণ 4: PHP এর CURL ব্যবহার করে প্রাপ্ত বডি থেকে হেডার আলাদা করা
উদাহরণ 5: PHP-এর CURL ব্যবহার করে একটি রেফারেল URL নির্ধারণ করা
সমস্যা: curl_setopt($ch,FOLLOW_LOCATION,1); ত্রুটি: open_basedir এবং safe_mode এর সাথে সমস্যা সমাধানটি: একটি ফাংশন ইতিমধ্যেই কেউ দ্বারা বিকশিত হয়েছে সমাধান n 2: একই ফাংশন, পরিবর্তিত, আমার জন্য দুর্দান্ত কাজ করে।= $curl_max_loops) ( $curl_loops = 0; রিটার্ন FALSE; ) curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $ডেটা = curl_exec($ch); list($header, $data) = explode("\n\n", $data, 2); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); যদি ($http_code == 301 || $http_code == 302) ( $matches = ; preg_match("/Location:(.*?)\n/", $header, $matches); $url = @parse_url(ট্রিম (array_pop($ matches))); যদি (!$url) ( // $curl_loops = 0 এ পুনঃনির্দেশিত করতে url প্রক্রিয়া করা যায়নি; $data ফেরত; ) $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)) ; যদি (!$url["স্কিম"]) $url["স্কিম"] = $last_url["স্কিম"]; যদি (!$url["হোস্ট"]) $url["হোস্ট"] = $last_url[ "হোস্ট"]; যদি (!$url["path"]) $url["path"] = $last_url["path"]; $new_url = $url["scheme"] . "://" . $ url["হোস্ট"]। $url["পথ"]। ($url["query"]?"?".$url["query"]:""); curl_setopt($ch, CURLOPT_URL, $new_url) ; debug("পুনঃনির্দেশ করা হচ্ছে", $new_url); curl_redir_exec($ch); ) ফেরত দিন ( $curl_loops=0; ফেরত $data; ) ) ?>
শুধু ডি FOLLOW_LOCATION ছাড়া এই ফাংশনটি ব্যবহার করুন এবং কাজ করা উচিত। সমস্যাটি হল যে আপনি যখন লাইনে পৌঁছান যেখানে আপনি ডেটা ফেরত দেন যদি http_code 301 oe 302 এর চেয়ে আলাদা হয়, $data-এ অপ্রচলিত তথ্য থাকে বা কিছুই নেই। তাই $debbbb কাজ করে।
উদাহরণ 6: CURL PHP ব্যবহার করে হেডার থেকে একটি কুকি পার্স করা
কখনও কখনও আপনি সার্ভার পিএইচপি-সেটিংসের কারণে CURLOPT_COOKIEJAR এবং CURLOPT_COOKIEFILE ব্যবহার করতে পারবেন না (তারা বলে যে আপনি এই বিকল্পগুলি ব্যবহার করে সার্ভার থেকে যেকোনো ফাইল দখল করতে পারেন)। এখানে সমাধান 1) CURLOPT_FOLLOWLOCATION 2 ব্যবহার করবেন না) curl_setopt($ch) ব্যবহার করুন CURLOPT_HEADER, 1) 3)এইভাবে হেডার কুকিজ থেকে নিন: preg_match_all("|Set-Cookie: (.*);|U", $content, $results); $কুকিজ = বিস্ফোরণ(";", $ফলাফল); 4) curl_setopt($ch, CURLOPT_COOKIE, $cookies) ব্যবহার করে তাদের সেট করুন;
উদাহরণ 7: CURL PHP ব্যবহার করে হেডার থেকে একটি কুকি পার্স করা
ইয়েভগেন যেমন আগে উল্লেখ করেছেন কখনও কখনও আমরা CURLOPT_COOKIEJAR এবং CURLOPT_COOKIEFILE ব্যবহার করতে পারি না৷ নীচে আমি জানুয়ারিতে লিখেছিলাম একটি হেডার কলব্যাক ফাংশন যা আপনাকে cURL অনুরোধগুলির মধ্যে কুকিগুলি বজায় রাখতে দেয়৷ এমনকি পুনঃনির্দেশের সময়ও সমস্ত অনুরোধের সময় কুকিগুলি $ch এ যোগ করা হয়, যাতে আপনি করতে পারেন এটিকে CURLOPT_FOLLOWLOCATION-এর সাথে একসাথে ব্যবহার করুন। এখানে কোডটি রয়েছে: ফাংশন read_header($ch, $string) ( global $location; #location ট্র্যাক/রিডাইরেক্ট গ্লোবাল $cookiearr; #store কুকিজ এখানে গ্লোবাল $ch; # ^ফাংশন প্যারাম ওভাররাইড করে $ch # এটা ঠিক কারণ আমাদের # নতুন কুকি $length = strlen($string) সহ গ্লোবাল $ch আপডেট করতে হবে; if(!strncmp($string, "Location:", 9)) ( #Keep of track শেষ রিডাইরেক্ট $location = trim(substr($string, 9, -1)); ) if(!strncmp($string, "Set-Cookie:", 11)) ( # কুকি পান $cookiest = trim(substr( $string, 11, -1)); $cookie = explode(";", $cookiesstr); $cookie = explode("=", $cookie); $cookiename = trim(array_shift($cookie)); $cookiearr [$cookiename] = trim(implode("=", $cookie)); ) $cookie = ""; if(trim($string) == "") ( #Execute শুধুমাত্র হেডার ফোরচের শেষে ($cookiearr $key=>$value হিসাবে) ( $cookie .="$key=$value; "; ) curl_setopt ($ ch, CURLOPT_COOKIE, $cookie); ) $দৈর্ঘ্য ফেরত দিন; ) curl_setopt($ch, CURLOPT_HEADERFUNCTION, "read_header"); এই কোডটি অনুমান করে যে আপনি প্রতিবার শুরু না করে $ch পুনরায় ব্যবহার করবেন (শুরুতে শুধুমাত্র একবার curl_init কল করুন)। আপনি যদি আপনার কোডের যেকোনো সময়ে $ch আবার আরম্ভ করতে চান তাহলে আপনি $cookiearr-এ বর্তমানে সঞ্চিত কুকিজ অ্যাক্সেস করতে পারেন এবং সেগুলিকে নতুন $ch-এ অন্তর্ভুক্ত করতে পারেন। আমি এই ফাংশনটি লিখেছিলাম রেগুলার এক্সপ্রেশনের সাথে যথেষ্ট অভিজ্ঞতার আগে তাই আপনি এখানে কোনো প্রিগ_ম্যাচ কল পাবেন না। আমি এই কোডটি বেশ কিছুদিন ধরে ব্যবহার করেছি এবং কোনো সমস্যা ছাড়াই জিমেইল, ইয়াহু, হটমেইল, এওএল ইত্যাদি অ্যাক্সেস করতে হয়েছে। আমি যা খুঁজছিলাম তা পাওয়ার আগে লগইন এবং কয়েক পৃষ্ঠার মাধ্যমে যান।
উদাহরণ 8: CURL PHP ব্যবহার করে হেডার লোড হ্যান্ডলার সেট আপ করা
CURL ব্যবহার করে, আমাকে একটি তৃতীয় পক্ষের স্ক্রিপ্ট কল করতে হবে যা সংযুক্তি হিসাবে বাইনারী ডেটা ফেরত দিয়েছিল যাতে পুনরুদ্ধার করা ডেটা আবার সংযুক্তি হিসাবে পাঠানো হয়। সমস্যাটি ছিল যে তৃতীয় পক্ষের স্ক্রিপ্টটি মাঝে মাঝে HTTP ত্রুটিগুলি ফিরিয়ে দেয় এবং আমি এই জাতীয় ক্ষেত্রে শূন্য-দৈর্ঘ্য সংযুক্তি এড়াতে চেয়েছিলাম। CURLOPT_FAILONERROR এবং CURLOPT_HEADERFUNCTION কলব্যাক ব্যবহারের সংমিশ্রণ তৃতীয় পক্ষের স্ক্রিপ্ট HTTP ত্রুটিগুলি সুন্দরভাবে প্রক্রিয়া করতে সাহায্য করেছে: ফাংশন curlHeaderCallback($resURL, $strHeader) ( if (preg_match("/^HTTP/i", $strHeader($)) (Header) ); হেডার("কন্টেন্ট-ডিসপোজিশন: অ্যাটাচমেন্ট; ফাইলের নাম="file-name.zip""); ) strlen($strHeader); ) $resURL = curl_init("http://site/"); curl_setopt($resURL, CURLOPT_BINARYTRANSFER, 1); curl_setopt($resURL, CURLOPT_HEADERFUNCTION, "curlHeaderCallback"); curl_setopt($resURL, CURLOPT_FAILONERROR, 1); curl_exec($resURL); $intReturnCode = curl_getinfo($resURL, CURLINFO_HTTP_CODE); curl_close($resURL); যদি ($intReturnCode != 200) ( "কোড সহ ত্রুটি: " প্রিন্ট করুন। $intReturnCode; )
উদাহরণ 9. একটি ফাইলে একটি পৃষ্ঠা সংরক্ষণ করা এবং CURL PHP ব্যবহার করে স্থানান্তর হার গণনা করা
WritePageToFile("http://es.php.net", "es.php.net.txt"); ফাংশন WritePageToFile($sHTMLpage, $sTxtfile) ( $sh = curl_init($sHTMLpage); $hFile = FOpen($sTxtfile, "w"); curl_setopt($sh, CURLOPT_FILE, $hFile); curl_setopt($sh, CURLADEROPT, 0); curl_exec ($sh); $sAverageSpeedDownload = curl_getInfo($sh, CURLINFO_SPEED_DOWNLOAD); $sAverageSpeedUpload = curl_getInfo($sh, CURLINFO_SPEED_UPLOAD); প্রতিধ্বনি "
"; প্রতিধ্বনি "গড় গতি ডাউনলোড == " . $sAverageSpeedDownload ." 
"; প্রতিধ্বনি " গড় গতি আপলোড == " . $sAverageSpeedUpload ।"
"; প্রতিধ্বনি"
"; $aCURLinfo = curl_getInfo($sh); print_r($aCURLinfo); প্রতিধ্বনি "
"; curl_close($sh); FClose ($hFile); প্রতিধ্বনি "( হোস্টিংয়ের একই পাথে "." $sTxtfile." " ফাইলটি দেখুন৷ " যেখানে এই স্ক্রিপ্টটি PHP).
"; }
উদাহরণ 9. একটি SSL সংযোগের মাধ্যমে একটি পৃষ্ঠা গ্রহণ করা (https)
$ch=curl_init("https://site"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNট্রান্সফার, 1); // ত্রুটিটি নিষ্ক্রিয় করুন "SSL শংসাপত্র সমস্যা, যাচাই করুন যে CA শংসাপত্র ঠিক আছে" curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // ত্রুটিটি নিষ্ক্রিয় করুন "SSL: সার্টিফিকেট বিষয়ের নাম "hostname.ru" লক্ষ্য হোস্ট নামের সাথে মেলে না "123.123"" curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $out=curl_exec($ch); //$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //echo "http_code=".$http_code,", err=".curl_error($ch); curl_close($ch);
উদাহরণ 10: কার্লে সেশন এবং কুকিজ ব্যবহার করা
$cookie_filename=sys_get_temp_dir()+"/cookie.tmp"; $curl=curl_init("http://site"); curl_setopt($curl, CURLOPT_RETURNট্রান্সফার, 1); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_filename);//প্রাপ্ত কুকিগুলি একটি ফাইলে সংরক্ষণ করুন curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_filename); //অনুমোদনের সময় এটি থেকে প্রাপ্ত কুকিগুলি সার্ভারে পাঠান $out=curl_exec($curl);
উদাহরণ 11: কার্লে ফাইল আপলোড এবং বহুমাত্রিক অ্যারে। CURLOPT_POSTFIELDS + কার্লফাইল

আপনি যদি একটি POST অনুরোধে একটি বহুমাত্রিক অ্যারে এবং একটি ফাইল পাঠাতে চান তবে আপনি একটি অদ্রবণীয় সমস্যার সম্মুখীন হবেন৷ আপনি CURLOPT_POSTFIELDS-এ একটি বহুমাত্রিক অ্যারে পাস করলে, দ্বিতীয় স্তরটি স্ট্রিং "অ্যারে" হিসাবে পাস করা হবে। আপনি যদি http_build_query ব্যবহার করে রূপান্তর করেন, আপনি ফাইল স্থানান্তর করতে সক্ষম হবেন না।

নীচে কার্লের জন্য ফাইল লোডিং সহ একটি দ্বি-মাত্রিক অ্যারে এনকোড করার জন্য একটি ফাংশন রয়েছে, যা PHP 5.3, PHP 5.4, এবং PHP 5.6-এর উভয় পুরানো সংস্করণে কাজ করবে

/** জটিল সূচী ব্যবহার করে একটি বহুমাত্রিক অ্যারেকে এক-মাত্রিক অ্যারেতে রূপান্তর করে এবং কার্ল * @param $inputArray * @param স্ট্রিং $inputKey * @return অ্যারে $requestVars = অ্যারে ব্যবহার করার জন্য CurlFile-এর সাথে উপসর্গে @ প্রতিস্থাপন করে ("id" => অ্যারে( 1, 2,"id" =>1234), "name" => "log", "logfile" => "@/tmp/test.log"); আমরা পাই: ["id"]=> int(1) ["id"]=> int(2) ["id"]=> int(1234) ["name"] => string(3) "log" [ "logfile"] => স্ট্রিং(13) "/tmp/test.log" ) */ function convertToStringArray($inputArray, $inputKey="") ( $resultArray=; foreach ($inputArray $key => $value হিসাবে ) ( $tmpKey = (bool)$inputKey? $inputKey."[$key]" : $key; যদি (is_array($value)) ( $resultArray+=convertToStringArray($value, $tmpKey); ) elseif ($value) = = "@")( $resultArray[$tmpKey] = (class_exists("CURLFile", মিথ্যা)) ? নতুন CurlFile(ltrim($value, "@")): $value; ) else ( $resultArray[$tmpKey] ] = $value; ) ) $resultArray ফেরত দিন; ) // $requestVars = array("id" => array(1, 2,"id" =>1234), "name" => "log", "logfile চেক করুন " => "@/tmp/test.log"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "সাইট"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, convertToStringArray($requestVars)); $res = curl_exec($ch); curl_close($ch); কার্ল ব্যবহারের উদাহরণ