Site icon Trickbd.com

cUrl এর বিস্তারিত[ Php basic]

যেহেতু ট্রিকবিডিতে সবাই কিছুনা কিছু শিখতে আসি বা শেখাতে আসি তাই আমার মনে হলো নিজের সামান্য জানা জ্ঞান আপনাদের সাথে সেয়ার করি। তাই চিন্তা করলাম php নিয়ে একটা বেসিক চালু করব। কারন php নিয়ে তেমন কোনো পোস্ট হয় না। যা হয় সবে থাকে phpকোনো স্ক্রিপটিং ডাউনলোড এর।

তাই আশ করি আপনাদের উপকারে আসবে।

cURLহচ্ছে এমন একটি টুল/লাইব্রেরি যেটা দিয়ে যেকোন URL  থেকে ডেটা নেয়া যায় এরপর সেই ডেটা নিয়ে আপনি আপনার স্ক্রিপ্টে যেকোন কাজ করতে পারেন। অনেক ল্যাংগুয়েজে cURL বাই ডিফল্ট থাকে। পিএইচপিতেও এটা থাকে তবে বাই ডিফল্ট এনাবল/সক্রিয় থাকেনা। এজন্য php.ini ফাইলটিতে গিয়ে extension=php_curl.dll এই লাইনটি আনকমেন্ট করতে হবে। সাথে সাথে cURL সক্রিয় হয়ে যাবে। cURL এর অর্থ হচ্ছে client URL. এই লাইব্রেরি ব্যবহার করে HTTP, HTTPS, FTP, TELNET, FILE, LDAP ইত্যাদি রিকোয়েস্ট করা যায়। cURL এর কাজ অন্যান্য কিছু ফাংশন দিয়েও করা যায় যেমন file_get_contents(), file(), readfile() তবে cURL এর সব কাজ এগুলি দিয়ে হয়না। ফাইল আপলোড, কুকি, ইউজার যাচাইকরন (authentication) ইত্যাদি cURL দিয়ে করা যায়।

ব্রাউজার দিয়ে কোন সাইটে গেলে যেরুপ আউটপুট সাইটটি থেকে পান (যে HTML রিটার্ন করে), cURL দিয়ে স্ক্রিপ্টেই সেই রেসপন্স পাওয়া যায়।

একটি কার্ল রিকোয়েস্ট করতে মুলত ৪ ধাপ পেরোতে হয়।

১. প্রথমে কার্ল initialize করতে হবে। curl_init() ফাংশন দিয়ে এটি করতে হয়।

২. এরপর curl_setopt() ফাংশন দিয়ে কিছু অপশন সেট করা যায়।

৩. curl_exec() ফাংশন দিয়ে কার্ল রিকোয়েস্টটি এক্সিকিউট করাতে হয়।

৪. কার্ল বন্ধ করতে হয় curl_close() ফাংশন দিয়ে।

কার্ল দিয়ে একটি সাধারন রিকোয়েস্ট: নিচের কোডটি সেভ করে রান করালেই Webcoachbd সাইটটি আপনার ব্রাউজারে খুলবে, ধরুন কোডটি সেভ করেছেন test.php নামে একটা ফাইলে এখন ব্রাউজারে http://localhost/test.php দিলেই ওয়েবকোচবিডি সাইটটি খুলবে।

01.<?php
02.//step 1: initialize curl
03.$cr = curl_init();
04. 
05.//step 2 : set some option
06.curl_setopt($cr, CURLOPT_URL, 'http://www.webcoachbd.com');
07.curl_setopt($cr,CURLOPT_HEADER,0);
08. 
09.//step 3 : execute curl
10.curl_exec($cr);
11. 
12.//step 4 : finally close curl
13.curl_close($cr);
14.?>

৬ নম্বর লাইনে যে URL দিয়েছি সেটা চাইলে ১ ধাপে (৩ নম্বর লাইনে) দেয়া যায় এভাবে

1.$cr = curl_init('http://www.webcoachbd.com');

২য় ধাপে আমি দুটি অপশন সেটা করেছি, কার্লে অনেক অপশন আছে যেগুলি প্রয়োজনমত সেট করতে পারেন। curl_setopt() ফাংশনে ১ম প্যারামিটার হিসেবে কার্লের হ্যান্ডেল দিতে হয়, এই উদাহরনে হ্যান্ডলটি হল $cr (যেটা দিয়ে initialize করেছি), এরপরে ২য় প্যারামিটারটি হল অপশনের নাম যেমন CURLOPT_URL এবং ৩য় প্যারামিটারটি হল অপশনটির মান। মুলত ২য় ধাপেই সব কাজ করতে হয় বাকি ৩টি ধাপ সব কোডেই প্রায় একই থাকবে। নিচে প্রয়োজনীয় কিছু অপশন তালিকা এবং তাদের কাজ বর্ননা করা হল:

 

 অপশন বর্ননা
CURLOPT_URL এটার মান দিতে হবে একটা URL, এটা অবশ্য curl_init() এর ভিতরেও করা যায়।
CURLOPT_CERTINFO SSL সার্টিফিকেট তথ্য জানতে অপশনটির মান TRUE সেট করতে হবে। পিএইচপি ৫.৩.২ এর পর থেকে এটা যোগ হয়েছে। এটার কার্যকারীতা দেখতে CURLOPT_VERBOSE অপশনটি অন থাকতে হবে।
CURLOPT_FRESH_CONNECT যদি মান TRUE দেন তাহলে প্রতিবার ডেটা ট্রান্সফারের সময় নতুন কানেকশন করে ডেটা আনবে। cache থেকে কানেকশন স্থাপিত হবেনা।
CURLOPT_HEADER TRUE দিন যদি আউটপুটে হেডারের তথ্য দেখতে চান।
CURLOPT_POST POST রিকোয়েস্ট করতে অপশনটির মান TRUE সেট করতে হয়। HTML ফর্মে get,post মেথড থাকেনা? সেই post
CURLOPT_RETURNTRANSFER curl_exec() সরাসরি পেজটি আউটপুট দেয় (যে URL এর রিকোয়েস্ট পাঠানো হচ্ছে)। যদি স্ট্রিং হিসেবে চান আউটপুটটি তাহলে এ অপশনটির মান TRUE সেট করতে হবে।
CURLOPT_PORT যদি পোর্ট নাম্বার থাকে তাহলে দিতে পারেন, কানেকশনের সময়
CURLOPT_CONNECTTIMEOUT কানেকশন স্থাপনের জন্য কার্ল কত সেকেন্ড পর্যন্ত চেষ্টা করবে সেটার মান। যদি ০ দেন তাহলে অনির্দিষ্টকাল অপেক্ষা করবে।
CURLOPT_INFILESIZE যে ফাইল আপলোড হচ্ছে সেটার সাইজ। সাইজ দেয়ার সময় byte এ দিতে হবে।
CURLOPT_TIMEOUT কার্ল কতক্ষন দেরি করবে সেটার মান। সেকেন্ডে দিতে হবে।
CURLOPT_COOKIEFILE কুকি কোন ফাইলে থেকে নিতে হবে সেটার নাম।

পুরো অপশন তালিকা সমন্ধে জানতে পিএইচপি ম্যানুয়াল দেখুন।

কিছু উদাহরন দেখলে সব ধারনা স্বচ্ছ হয়ে যাবে। অপশন তালিকা দেখে আসলে সব পরিষ্কার হবেনা। তাই নিচে কিছু উদহারনসহ কোড দেয়া হল

উদাহরন ১ : কার্ল দিয়ে GET রিকোয়েস্ট

কার্লে বাই ডিফল্ট সব রিকোয়েস্ট GET মেথডে যায়। সুতরাং অাপনি URL দেয়ার সময় প্যারামিটার পাঠাতে পারেন কোয়েরি স্ট্রিংয়ের মত। আমরা বিভিন্ন সাইটে URL দিয়ে (প্যারামিটারসহ) দিয়ে অনেক সময় ডেটা আনি, এটা আপনি চাইলে আপনার স্ক্রিপ্টেই আনতে পারেন যেমন

01.<?php
02.//step 1: initialize curl
03.$cr = curl_init();
04. 
05.//step 2 : set some option
06.curl_setopt($cr, CURLOPT_URL, 'http://www.webcoachbd.com/php-basic/php-operators?showall=&start=2');
07. 
08. 
09.//step 3 : execute curl
10.curl_exec($cr);
11. 
12.//step 4 : finally close curl
13.curl_close($cr);
14.?>

এই স্ক্রিপ্টটি চালিয়ে দেখুন আমাদের পিএইচপি অপারেটর টিউটোরিয়ালের ৩য় পেজে নিয়ে যাবে। CURLOPT_URL এই অপশনের মানটি দেখুন যে URL দিয়েছি সেখানে showall, start ইত্যাদি প্যারামিটার আছে এবং সেই প্যারামিটার অনুযায়ী সঠিক ডেটা রিটার্ন করেছে।