Friday, May 17, 2024
Homeবিজ্ঞান ও প্রযুক্তিসহজ বাংলায় পিএইচপি- এফটিপি

সহজ বাংলায় পিএইচপি- এফটিপি

সূচীপত্র


এক কম্পিউটার থেকে অন্য কম্পিউটারে ফাইল আদান-প্রদান বর্তমান সময়ে খুবই সাধারণ ও প্রয়োজনীয় একটি বিষয় হয়ে দাঁড়িয়েছে। আমাদের কোন সহকর্মী বা বন্ধুর সাথে কোন ফাইল শেয়ার করা- ইন্টারনেটের এই যুগে, এটি কোন বিষয়ই না। সামান্য একটু সময়ের কাজ মাত্র। ফাইল আদান প্রদানের ক্ষেত্রে এফটিপি একটি খুবই সাধারণ বিষয়। নির্দিষ্ট কোন ডিরেক্টরীর ফাইলগুলো তালিকা করে এগুলো অন্য কোন কম্পিউটারে আপলোড বা কোথাও থেকে ডাউনলোড করার সুবিধা এফটিপি সফটওয়্যার দিয়ে থাকে। এফটিপি সফটওয়্যারটি ক্লায়েন্ট ও সার্ভার দুইজনের মধ্যে কাজ করে। সহজাতভাবেই এফটিপি ফাইল আদান প্রদান করার অনিরাপদ একটি মাধ্যম। এফটিপি ব্যবহার করার সময় ইউজার নেম, পাসওয়ার্ড ও ফাইল একটি নেটওয়ার্কের ভিতর দিয়ে অতিক্রম করে কোন প্রকার এনস্ক্রিপশন ছাড়াই। এর মানে এই যে, নেটওয়ার্ক সম্পর্কে যথেষ্ট জ্ঞান রাখে এমন কেউ যদি আপনার নেটওয়ার্কে প্রবেশ করতে পারে তাহলে সহজেই ইউজার নেম বা পাসওয়ার্ড হাতিয়ে নিতে পারে। তাই ফাইল আদান প্রদানের জন্য আরো অধিক নিরাপদ পদ্ধতিও আছে। যেমন SCP অথবা SFTP (SSH File Transfer Protocol) কমান্ড। তবে এখনো বেশিরভাগ ক্ষেত্রে এফটিপিই ব্যবহৃত হচ্ছে, বিশেষ করে হোস্টিং সরবরাহকারীদের কাছে।

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

এফটিপি সার্ভারে লগইন

আপনার কম্পিউটার থেকে এফটিপি সার্ভারে কানেক্ট করতে ftp_connect ফাংশন ব্যবহার করতে হবে। যেমন-

$connect = ftp_connect(“janet.valade.com”);

আইপিও ব্যবহার করা যাবে-

$connect = ftp_connect(“172.17.204.2”);

সার্ভারে কানেক্টেড হওয়ার পর আপনার লগইন করতে হবে। ftp_login ফাংশনের মাধ্যমে সার্ভারে লগইন করতে হবে। নিচের স্টেটমেন্টে লগইন ফাংশন দেখানো হলো-

$login_result = ftp_login($connect,$userid,$passwd);

সার্ভারে কানেক্ট না করেই লগইন করতে গেলে পিএইচপি নিচের মতো এরর মেসেজ দেখাতে পারে-

Warning: ftp_login() expects parameter 1 to be resource, boolean given in d:\test1\test13.php on line 9

শুধু সতর্কবার্তা দিয়েই স্ক্রিপ্ট থেমে থাকে না। সফলভাবে লগইন না করা পর্যন্ত এটি এক্সিকিউট হতেই থাকে। তাই কানেকশনটি ব্যর্থ হলে একে বন্ধ করে দেয়া হয় এভাবে-

$connect = ftp_connect(“janet.valade.com”)
or die(“Can’t connect to server”);
$login_result = ftp_login($connect,$userid,$passwd)
or die(“Can’t login to server”);

ডিরেক্টরীর ফাইলের তালিকা তৈরি

এই কাজটি সচরাচরই করতে হয়। ftp_nlist স্টেটমেন্ট দূরবর্তী কম্পিউটারের ডিরেক্টরীর ফাইলের তালিকা তৈরি করে একটি এ্যারেতে সংরক্ষণ করে। স্টেটমেন্টটি নিম্নরূপ-

$filesArr = ftp_nlist($connect,”data”);

ফাংশনটির দ্বিতীয় প্যারামিটারটিতে ডিরেক্টরীর নাম দেয়া হয়। কোন কারণে ডিরেক্টরীর নাম জানা না থাকলে তা জানানোর জন্য এফটিপি সার্ভারকে অনুরোধ করা যায়। যেমন-

$directory_name = ftp_pwd($connect);
$filesArr = ftp_nlist($connect,$directory_name);

স্টেটমেন্টটি এক্সিকিউট হলে প্রতিটি ফাইল নেম একেকটি ইলিমেন্ট হিসেবে এ্যারেতে সংরক্ষিত হয়। নিচের মতো লুপ চালিয়ে ফাইলের নামগুলো ডিসপ্লে করা যায়।

foreach($filesArr as $value)
{
echo “$value\n”;
}

এফটিপির মাধ্যমে ফাইল ডাউনলোড ও আপলোড

ftp_get ফাংশন ব্যবহার করে দূরের কোন সার্ভার থেকে ফাইল ডাউনলোড করা যায়। যেমন-

ftp_get($connect,”newfile.txt”,”data.txt”,FTP_ASCII);

newfile.txt হলো ডাউনলোড হওয়ার ফাইলটির নাম, data.txt হলো যে ফাইলটি আপনি সার্ভার থেকে ডাউনলোড করতে চান। আর FTP_ASCII এফটিপিকে বলে দেয় কোন ধরণের ফাইল ডাউনলোড হবে। টেক্সট ফাইলের ক্ষেত্রে FTP_ASCII এবং বাইনারী ফাইলের ক্ষেত্রে FTP_BINARY ফাইল মুড ব্যবহার করা হয়। যেমন গ্রাফিক ফাইল হলো বাইনারী ফাইল।

অনুরূপভাবে, ftp_put ফাংশনের মাধ্যমে ফাইল আপলোড করা হয়। নিচের স্টেটমেন্টটি দেখুন-

ftp_put($connect,”newfile.txt”,”data.txt”,FTP_ASCII);

newfile.txt হলো ফাইলটি রিমোট কম্পিউটারের আপলোড হওয়ার পর যে নামে সংরক্ষিত হবে আর data.txt হলো যে ফাইলটি আপনার কম্পিউটার থেকে রিমোট কম্পিউটারে আপলোড হবে সেই ফাইলের নাম।

ফাইল আদান প্রদান শেষ করে এফটিপির কানেকশনটি বন্ধ করতে হবে। এজন্য আমরা নিচের স্টেটমেন্টটি ব্যবহার করতে পারি-

ftp_close($connect);

এখানে এফটিপি সংযোগের মাধ্যমে ফাইল ডাউনলোড করার একটি পুরো স্ক্রিপ্ট দেয়া হলো-

<?php
/* Script name: downloadFiles
* Description: Downloads all the files with a .txt
* extension in a directory via FTP.
*/
include(“ftpstuff.inc”);
$dir_name = “data/”;
$connect = ftp_connect($servername)
or die(“Can’t connect to FTP server”);
$login_result = ftp_login($connect,$userID,$passwd)
or die(“Can’t log in”);
$filesArr = ftp_nlist($connect,$dir_name);
foreach($filesArr as $value)
{
if(preg_match(“#\.txt$#”,$value))
{
if(!file_exists($value))
{
ftp_get($connect,$value,$dir_name.$value,FTP_ASCII);
}
else
{
echo “File $value already exists!\n”;
}
}
}
ftp_close($connect);
?>

স্ক্রিপ্টটি ডিরেক্টরীর ফাইলগুলোর একটি তালিকা তৈরি করে $filesArr তে সংরক্ষণ করে। foreach লুপটি $filesArr এ্যারেতে রাখা তালিকায় দেখে কোন কোন ফাইলে .txt এক্সটেনশন আছে। .txt এক্সটেনশনের ফাইল পেলে স্ক্রিপ্ট দেখে লোকাল কম্পিউটারটিতে একই নামে আর কোন ফাইল আছে কিনা। না থাকলে ফাইলটি ডাউনলোড হবে আর থাকলে একটি বার্তা দেখাবে ।

স্ক্রিপ্টে ftpstuff.inc নামে একটি ফাইল ইনক্লুড করা হয়েছে। এই ফাইলটিতে এফটিপির মাধ্যমে সার্ভারে সংযোগ নেয়ার সব তথ্য রাখা আছে। ফাইলটিতে নিচের কোডগুলো লেখা আছে-

<?php
$servername = “yourserver”;
$userID = “youruserid”;
$passwd = “yourpassword”;
?>

অন্যান্য আরো এফটিপি ফাংশন

উপরের যে সব এফটিপি ফাংশন সম্বন্ধে আলোচনা করা হয়েছে এগুলো ছাড়াও আরো অনেক প্রয়োজনীয় ফাংশন রয়েছে। নিচে এরকম কিছু ফাংশন তুলে ধরা হলো-

ফাংশনকি কাজ করে
ftp_cdup($connect)সরাসরি বর্তমান ডিরেক্টরির উপরে ডিরেক্টরি পরিবর্তন করে।
ftp_chdir($connect, ”directoryname”)দূরবর্তী কম্পিউটারে ডিরেক্টরি পরিবর্তন করে।
ftp_close($connect)একটি এফটিপি সংযোগ বন্ধ করে।
ftp_connect(“servername”)কম্পিউটার থেকে সংযোগ স্থাপন করে। servername একটি ডোমেন নাম অথবা একটি আইপি ঠিকানা হতে পারে।
ftp_delete($connect,”path/filename”)দূরবর্তী কম্পিউটারের ফাইলকে ডিলিট করে।
ftp_exec($connect,”command”)দূরবর্তী কম্পিউটারে একটি সিস্টেম কমান্ড এক্সিকিউট করে।
ftp_fget($connect,$fh,”data.txt”, FTP_ASCII)একটি খোলা ফাইলে দূরবর্তী কম্পিউটার থেকে ফাইলের বিষয়বস্তু ডাউনলোড করা হয়।
ftp_fput($connect,”new.txt”,$fh,FTP_ASCII)দূরবর্তী কম্পিউটারে একটি ফাইল আপলোড করে।
ftp_get($connect,”d.txt”,”sr.txt”,FTP_ASCII)দূরবর্তী কম্পিউটার থেকে ফাইল ডাউনলোড করে। sr.txt নামের ফাইলটি ডাউনলোড করা হয় এবং d.txt হলো ডাউনলোড করা ফাইলের নাম।
ftp_login($connect,$userID,$password)এফটিপি সার্ভারে লগইন করে।
ftp_mdtm($connect,”filename.txt”)ফাইলটি সর্বশেষ কবে মডিফাই করা হয়েছিল সেই সময়টি বের করে।
ftp_mkdir($connect,”directoryname”)দূরবর্তী কম্পিউটারে একটি নতুন ডিরেক্টরী তৈরি করে।
ftp_nlist($connect,”directoryname”)দূরবর্তী কম্পিউটারের নির্দিষ্ট ডিরেক্টরীর ফাইলের তালিকা তৈরি করে।
ftp_put($connect,”d.txt”,”sr.txt”,FTP_ASCII)দূরবর্তী কম্পিউটারে ফাইল আপলোড করে। sr.txt নামের ফাইলটি আপলোড করে এবং সার্ভারে আপলোডকৃত ফাইলটির নাম হবে d.txt।
ftp_pwd($connect)দূরবর্তী কম্পিউটারের বর্তমান ডিরেক্টরীর নাম দেখায়।
ftp_rename($connect,”oldname”,”newname”)দূরবর্তী কম্পিউটারের ফাইলের নাম রিনেম করে।
ftp_rmdir($connect,”directoryname”)দূরবর্তী কম্পিটারের ডিরেক্টরীকে ডিলিট করে।
ftp_size($connect,”filename.txt”)দূরবর্তী কম্পিউটারের কোন ফাইলের আকার দেখায়।
ftp_systype($connect)দূরবর্তী কম্পিউটারটি কোন সিস্টেমের তা দেখায়। যেমন- ম্যাক।

ফাইল পড়া ও লেখা

ডাইনামিক ওয়েব সাইট বা ওয়েব এপ্লিকেশনে সাধারণত পিএইচপি ও মাইএসকিউএল একসাথে কাজ করে। এপ্লিকেশনে কোন ডাটা সংরক্ষণ করার প্রয়োজন হলে তা ডাটাবেজে সংরক্ষণ করা হয়। বিশেষ কোন ক্ষেত্রে ডাটাবেজ ছাড়া ফাইলেও কোন তথ্য রাখা বা ফাইল থেকে কোন তথ্য পড়া তথা রিড করার প্রয়োজন হতে পারে। এখানে কিভাবে একটি টেক্সট বা ফ্ল্যাট ফাইলে ডাটা রাইট বা রিড করতে হয় সে সম্বন্ধে আলোচনা করব।

ফ্ল্যাট ফাইল থেকে ডাটা রিট্রাইভ বা ডাটা স্টোর করার জন্য পিএইচপির ফাংশন ব্যবহার করতে হবে। এ কাজটি তিনটি ধাপে সম্পন্ন করা হয়। প্রথমত- ফাইলটি খোলা, দ্বিতীয়ত- ফাইলটিতে তথ্য রাখা বা ফাইলটি থেকে তথ্য পড়া এবং তৃতীয়ত- ফাইলটি বন্ধ করা।

ফাইল খোলা

ফাইলে কোন তথ্য রাখা বা ফাইলের কোন তথ্য পড়ার পূর্বে প্রথম ধাপের কাজ হলো ফাইলটি খোলা। ফাইল খোলার সাধারণ ফরম্যাটটি হলো-

$fh = fopen(“filename”,”mode”)

স্টেটমেন্টটিতে ফাইলটিকে হ্যান্ডেল করার জন্য $fh নামে একটি ভ্যারিয়েবল এসাইন করা হয়েছে। $fh ভ্যারিয়েবলটি ফাইলটিকে চিহ্নিত করার তথ্যাটি ধারণ করে। ফাইল সাধারণত filename.txt, পাথ হলে c:/data/filename.txt অথবা ইউআরএল হলে http://yoursite.com/filename.txt এভাবে লেখা হয়। ফাইল ওপেন করার সময় মুড উল্লেখ করে দিয়ে পিএইচপিকে জানানো হয় প্রকৃতপক্ষে ফাইলটি দিয়ে কি ধরণের কাজ করা হবে। নিচে একটি টেবিলে ফাইলের মুডগুলো বর্ণনাসহ উল্লেখ করা হলো-

মুডএটি কীফাইলটি না থাকলে কি হয়
rরিড অনলি বা শুধুমাত্র পড়া যাবে।একটি সতর্কতামূলক বার্তা প্রদর্শন করা হয়।
r+পড়া যাবে এবং লেখাও যাবে।একটি সতর্কতামূলক বার্তা প্রদর্শন করা হয়।
wরাইট অনলি বা শুধুমাত্র লেখা যাবে।পিএইচপি এটি তৈরি করে। একই নামে ফাইল থাকলে পিএইচপি ওভাররাইট করে।
w+পড়া যাবে এবং লেখাও যাবে।পিএইচপি এটি তৈরি করে। একই নামে ফাইল থাকলে পিএইচপি ওভাররাইট করে।
aফাইলের শেষে তথ্য সংযোজন করে।পিএইচপি এটি তৈরি করে।
a+পড়বে এবং তথ্য যোগ করবে।পিএইচপি এটি তৈরি করে।

রিড মুডে ফাইল খোলা

file1.txt নামের একটি ফাইলের তথ্যগুলো পড়ার জন্য ফাইলটি খুলতে চাইলে নিচের স্টেটমেন্টটি ব্যবহার করবেন-

$fh = fopen(“file1.txt”,”r”);

এই স্টেটমেন্টটিতে পিএইচপি file1.txt ফাইলটিকে স্ক্রিপ্টটি যে ডিরেক্টরীতে আছে সেখানে খুজবে। সেখানে না পেলে একটি বার্তা দেখাবে। কিন্তু স্টেটমেন্টটি থেমে যাবে না। এজন্য স্ক্রিপ্টটি এখানে থামিয়ে দিতে die স্টেটমেন্ট ব্যবহার করতে হবে। যেমন-

$fh = fopen(“file1.txt”,”r”)
or die(“Can’t open file”);

die স্টেটমেন্টটি স্ক্রিপ্টটিকে থামিয়ে দিবে এবং নির্দিষ্ট বার্তাটি ডিসপ্লে করবে।

রাইট মুডে ফাইল খোলা

ডিরেক্টরীর নির্দিষ্ট কোন ফাইলে তথ্য রাখতে নিচের মতো স্টেটমেন্টটি লিখতে হবে-

$fh = fopen(“c:/testdir/file1.txt”,”w”);

উল্লেখিত ডিরেক্টরীতে ফাইলটি না থাকলে ওই ডিরেক্টরীতে ফাইলটি তৈরি হবে। কিন্তু ডিরেক্টরীটির অস্তিত্ব না থাকলে ডিরেক্টরীটি তৈরি না হয়ে একটি বার্তা দেখাবে। তাই ডিরেক্টরীটি সম্পর্কে নিশ্চিত হয়ে ফাইলটি তৈরি করতে আমরা স্টেটমেন্টটিকে নিচের মতো করে লিখতে পারি-

If(is_dir(“c:/tester”))
{
$fh = fopen(“c:/testdir/file1.txt”,”w”);
}

এই স্টেটমেন্টে উল্লেখিত ডিরেক্টরীটির অস্তিত্ব থাকলেই কেবলমাত্র fopen স্টেটমেন্টটি এক্সিকিউট হবে।

অন্য ওয়েব সাইটের ফাইল খোলা

নিচের স্টেটমেন্টটি ব্যবহার করে অন্য কোন ওয়েব সাইটের ফাইলও খোলা যায়। যেমন-

$fh = fopen(“http://janet.valade.com/index.html”,”r”);

একটি ইউআরএলকে কেবলমাত্র রিড মুডেই খোলা যায়। এটি রাইট মুডে ওপেন হবে না।

ফাইল বন্ধ করা

একটি ফাইল পড়া বা এতে লেখা শেষে ফাইলটি এই স্টেটমেন্টটি দিয়ে বন্ধ করা হয়।

fclose($fh);

এখানে $fh হলো ফাইলটি খোলার সময় ব্যবহৃত স্টেটমেন্টটি যে ভ্যারিয়েবলে রাখা হয়েছিল।

ফাইলে লেখা

একটি ফাইল রাইটিং মুডে খোলার পর fwrite স্টেটমেন্ট ব্যবহার করে এতে লেখা যাবে। স্টেটমেন্টটির সাধারণ ফরম্যাট এরকম-

fwrite($fh, datatosave);

এই স্টেটমেন্টেও $fh একটি পয়েন্টার হিসেবে ব্যবহৃত হয়েছে। যা ফাইলটি ওপেন করার সময় ব্যবহার করা হয়েছিল। datatosave হলো সেই তথ্য যা ফাইলে লিখে সংরক্ষণ করা হবে। তথ্যটি কোন স্ট্রিং অথবা ভ্যারিয়েবলও হতে পারে। যেমন নিচের স্টেটমেন্টগুলো দেখুন-

$today = date(“Y-m-d”);
$fh = fopen(“file2.txt”,”a”);
fwrite($fh,”$today\n”);
fclose($fh);

এই স্টেটমেন্টগুলো চলতি তারিখটি file2.txt ফাইলে সংরক্ষণ করে। a দিয়ে ফাইলটি এ্যাপেন্ড অর্থাৎ ফাইলটিতে কোন কিছু যোগ করা হবে এই মুডে খোলা হয়েছে। যদি ফাইলটি আগে থেকে তৈরি করা না থাকে তাহলে স্টেটমেন্টগুলো এক্সিকিউট হলেই ফাইলটি তৈরি হবে এবং এর প্রথম লাইনে তারিখটি লেখা হবে। এভাবে একটি লগ ফাইল তৈরি করা হলে স্ক্রিপ্টটি যতবার এক্সিকিউট হবে ততবার ফাইলে তারিখটি যোগ হবে। একই তারিখে ফাইলটি তিনবার এক্সিকিউট হলে, file2.txt তে তিনবারই তারিখটি থাকবে। এভাবে-

2013-10-22

2013-10-22

2013-10-22

\n ব্যবহার করায় প্রতিটি তারিখ পৃথক লাইনে আসে। এই উদাহরণটি w (রাইট) মুডে এক্সিকিউট করা হলে স্ক্রিপ্টটি প্রতিবার এক্সিকিউশনের সময় একটি নতুন ফাইল তৈরি হবে এবং প্রতিটি ফাইলই ওভার রাইট হবে। তাই একটি ফাইলের মধ্যেই সব তারিখ সংরক্ষণ করার জন্য এ্যাপেন্ড মুড ব্যবহার করা হয়েছে।

ফাইল পড়া

পিএইচপিতে fgets স্টেটমেন্টের মাধ্যমে যে কোন ফাইল পড়া যাবে। এর সাধারণ ফরম্যাটটি এরকম-

$line = fgets($fh);

এই স্টেটমেন্টেও আগের মতো $fh কে পয়েন্টার হিসেবে ব্যবহার করা হয়েছে। স্টেটমেন্টটি যতক্ষণ না ফাইলটির শেষে না পৌছায় ততক্ষণই পড়তে থাকে এবং স্ট্রিং আকারে তা $line এ ধারণ করে। পিএইচপিতে feof নামে আরেকটি ফাংশন আছে যা বলে দেয় এটি একটি ফাইলের শেষে এসে পৌছেছে। নিচের স্টেটমেন্টটি একটি ফাইলকে পড়ে এবং সবগুলো লাইনকে ডিসপ্লে করে।

while(!feof($fh))
{
$line = fgets($fh);
echo “$line”;
}

এই স্ক্রিপ্টে প্রথম লাইনে feof($fh) একটি true ভ্যালু রিটার্ন করে। যখন সে ফাইলের শেষে পৌছায়। বিস্ময়সূচক চিহ্নটি নির্দেশ করে যতক্ষণ ফাইলের শেষ প্রান্তে না পৌছাবে ততক্ষণই স্টেটমেন্টগুলা সত্য হবে এবং এক্সিকিউট হবে। অর্থ্যাৎ লাইনগুলো ইকো হতে থাকবে। যখনই ফাইলটির শেষে পৌছাবে তখনই লুপটি থেমে যাবে। এই স্টেটমেন্টগুলো ব্যবহার করে পূর্বের উদাহরণের file2.txt ফাইলটি দেখলে নিচের মত তারিখ ডিসপ্লে করবে-

2013-10-22

2013-10-22

এখানে প্রতিটি লাইন আলাদা লাইনে না দেখাতে চাইলে স্টেটমেন্টটি এভাবে লিখতে পারেন-

while(!feof($fh))
{
$line = rtrim(fgets($fh));
echo “$line”;
}

rtrim ফাংশনটি লাইনের শেষের কোন স্পেসকে অপসারণ করে দেয়। এই স্টেটমেন্টগুলো নিচের মতো আউটপুট দেয়-

2013-10-222013-10-22

টুকরো টুকরো করে ফাইল পড়া

কোন ক্ষেত্রে একটি ফাইলের স্ট্রিংকে নির্দিষ্ট কোন আকারে পড়তে চাইতে পারেন। নিচের সমস্যাটিতে fgets নির্দিষ্ট সংখ্যক ক্যারেক্টার আকারে স্ট্রিংকে পড়বে-

$line = fgets($fh,n)

এই স্টেটমেন্টে পিএইচপি নির্দিষ্ট সংখ্যক ক্যারেক্টার একসাথে করে পড়বে। নিচে একটি উদাহরণ দেয়া হলো-

while(!feof($fh))
{
$char4 = fgets($fh,5);
echo “$char4\n”;
}

এই স্টেটমেন্টগুলো প্রতি 4টি করে ক্যারেক্টার স্ট্রিংকে এক সাথে করে পড়ে যতক্ষণ না ফাইলের শেষ পর্যন্ত পৌছায়। এটি নিচের মতো আউটপুট দেখায়-

2013

-10-

22

2013

-10-

22

এ্যারেতে ফাইল পড়া

একটি সম্পূর্ণ ফাইল কোন একটি এ্যারেতেও পড়া যায়। এটা করতে আমাদের নিচের স্টেটমেন্টগুলো লিখতে হবে-

$fh = fopen(“file2.txt”,”r”);
while(!feof($fh))
{
$content[] = fgets($fh);
}
fclose($fh);

$content এ্যারেতে ফাইলের প্রতিটি লাইন এ্যারের একটি ইলিমেন্ট হিসেবে সংরক্ষিত হবে। এই কাজটি আবার সংক্ষেপেও করা যায়। এজন্য নিচের স্টেটমেন্টটি লিখতে হবে-

$content = file(“file2.txt”);

এই স্টেটমেন্টটিও fgets ফাংশনের মতো প্রতিটি লাইনকে এ্যারেতে সংরক্ষণ করে। তবে file ফাংশন এক্সিকিউট হওয়ার সময় স্ক্রিপ্ট এক্সিকিউশনের গতিকে ধীর করে দেয়। বড় ফাইল পড়ার সময় file ফাংশনের চেয়ে fgets ফাংশন ব্যবহার করাই ভাল। এতে স্ক্রিপ্ট খুব দ্রুত কাজ করে।

স্ট্রিং এ ফাইল পড়া

কোন সময় একটি ফাইলের পুরো কনটেন্টকে একটি স্ট্রিং এ নিয়ে আসার প্রয়োজন হতে পারে। উদাহরণস্বরুপ একটি ফাইলের কনটেন্টকে আপনি ই-মেইলে কোথাও পাঠাতে চান। তাই পুরো ফাইলের কনটেন্টকে একটি স্ট্রিং আকারে পড়তে হবে। এজন্য নিচের মতো করে পিএইচপির ফাংশন ব্যবহার করতে হবে-

$content = file_get_contents(“file2.txt”,1);

file_get_contents ফাংশনটি file ফাংশনের মতো একই কাজ করে। কিন্তু এই ফাংশনে ফাইলের কনটেন্ট একটি স্ট্রিং এ সংরক্ষিত হয়।

অন্য প্রোগ্রামের সাথে তথ্য বা ডাটা বিনিময়

কখনও কখনও অন্য কোন প্রোগ্রামে পিএইচপি থেকে তথ্য দেয়া বা অন্য কোন প্রোগ্রাম থেকে পিএইচপিতে তথ্য আনার প্রয়োজন হতে পারে। ফ্ল্যাট ফাইলের ক্ষেত্রে কিভাবে তথ্য বা কনটেন্ট আদান প্রদান করা হয় তা আমরা পূর্বের সেকশনে জেনে এসেছি।

ফ্ল্যাট ফাইলে ডাটা বিনিময়

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

ধরুন আপনার পিএইচপি স্ক্রিপ্ট কতগুলো তথ্য একটি টেক্সট ফাইলে সংরক্ষণ করে। সেই টেক্সট ফাইলটি অন্য যে সফটওয়্যারের পড়ার ক্ষমতা আছে শুধুমাত্র সেই সফটওয়্যারই পড়তে পারবে। যেমন- বেশিরভাগ ক্ষেত্রে ওয়ার্ড প্রসেসিং সফটওয়্যারই টেক্সট ফাইল পড়তে পারে। এমনকি কিছু কিছু ওয়ার্ড প্রসেসিং সফটওয়্যার নির্দিষ্ট কিছু ফরম্যাটের টেক্সট ফাইল পড়তে পারে। এমন হতে পারে একটি এপ্লিকেশন তৈরি করা হলো যা একটি টেক্সট ফাইলের নির্দিষ্ট অবস্থানের টেক্সটকে নির্দিষ্ট একটি ফরম্যাটে পড়বে। যেমন- একটি এপ্লিকেশনটি একটি ফাইলের ক্যারেক্টার স্ট্রিংয়ের প্রথম 20 ক্যারেক্টার কোন ব্যক্তির নাম, পরবর্তী 20 ক্যারেক্টার তার ঠিকানা এভাবে পড়ে। তাই fwrite স্টেটমেন্ট দিয়ে কোন ফ্ল্যাট ফাইল তৈরি করার সময় অন্য যে সফটওয়্যার সেই ফাইলটি কোন ফরম্যাটে পড়তে তা খেয়াল রাখতে হবে।

কমা ডিলিমিটেড ফরম্যাটে ডাটা বিনিময়

কমা সেপারেটেড ভ্যালুস (CSV- comma-separated values) একটি বহুল ব্যবহৃত ফাইল ফরম্যাট। এটিকে কমা ডিলিমিটেড (comma delimited) ফাইলও বলা হয় যা সফটওয়্যার প্রোগ্রামের মধ্যে তথ্য আদান প্রদানে ব্যবহৃত হয়।

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

x

নারুল মিয়া
নারুল মিয়াhttps://tiltony.com
নারুল মিয়া আমার ডাকনাম। যদিও এই নামে দু’একজনের বেশি আমাকে চিনেন না। আমার দূর সম্পর্কের এক নানী খুব আদর করে এই নামে ডাকতেন। আমার আসল নাম মো. মনিরুজ্জামান। লিখতে ভালোবাসি। চলার পথে যেসব বিষয়ের সম্মুখীন হয়েছি সাধারণত সেগুলো নিয়ে লিখি, নিজের মতো করে।
RELATED ARTICLES
- Advertisment -

Most Popular

Recent Comments