PHP server side scripting ஆக இருப்பதில் என்ன பலனென்றால், web developer சேவையகத்தினுடைய (server) கோப்பு முறைமையை எளிமையாக அணுகுவதற்கான வசதிகளை ஏற்படுத்தித் தருகிறது. கோப்புகளை உருவாக்குவது, திறப்பது, நீக்குவது மற்றும் கோப்புகளில் எழுவது போன்ற வசதிகளை நமக்கு PHP உருவாக்கித் தருகிறது. மேலும், அடைவுகளுக்குள் பயணிப்பது, அடைவுகளை பட்டியலிடுவது, புதிய அடைவுகளை உருவாக்குவது போன்ற வேலைகளையும் செய்ய முடியும்.
கோப்புகளை திறத்தலும் உருவாக்குதலும் (Opening and Creating Files)
ஏற்கனவே இருக்கக்கூடிய ஒரு கோப்பை திறப்பதற்கும், புதிதாக ஒரு கோப்பை உருவாக்குவதற்கும் fopen() function பயன்படுகிறது. Fopen() function கோப்புகளை கையாள்வதற்கு இரண்டு உள்ளீடுகளைப் பெற்றுக்கொள்கிறது. முதலாவது உள்ளீட்டில் திறக்க வேண்டிய கோப்பின் பெயரை கொடுக்க வேண்டும். கோப்பின் முழு பாதையையும் உள்ளீடாக கொடுக்க வேண்டும். கோப்பின் பாதையானது சேவையகத்தின் கோப்பு முறைமையோடு தொடர்புடையது. இணைய வழங்கியின்(web server) root -டோடு தொடர்புடையதல்ல. இரண்டாவது உள்ளீட்டில் எந்த பண்புடன்(create, read only, write only etc) கோப்பைத் திறக்க வேண்டும் என்பதை கொடுக்க வேண்டும்.
கீழே உள்ள அட்டவணையில் கோப்பினுடைய பண்புகள் முழு விபரங்களுடன் கொடுக்கப்பட்டுள்ளது.
Mode (முறைமை) | Description(விளக்கம்) |
R | Read only access. கோப்பினுடைய தொடக்கத்தில் சுட்டி இருக்கும். |
R+ | Read and Write access. கோப்பினுடைய தொடக்கத்தில் சுட்டி இருக்கும். |
W | Write only access. கோப்பினுடைய தொடக்கத்தில் சுட்டி இருக்கும். கோப்பு ஏற்கனவே உருவாக்கப்படவில்லையென்றால் , புதிதாக உருவாக்கப்படும். |
W+ | Read and Write access. கோப்பினுடைய தொடக்கத்தில் சுட்டி இருக்கும். கோப்பு ஏற்கனவே உருவாக்கப்படவில்லையென்றால் , புதிதாக உருவாக்கப்படும். |
A | Write only access. கோப்பினுடைய இறுதியில்சுட்டி இருக்கும். கோப்பு ஏற்கனவே உருவாக்கப்படவில்லையென்றால் , புதிதாக உருவாக்கப்படும். |
A+ | Read and write access. கோப்பினுடைய இறுதியில்சுட்டி இருக்கும். கோப்பு ஏற்கனவே உருவாக்கப்படவில்லையென்றால் , புதிதாக உருவாக்கப்படும். |
X | Create and open for write only. கோப்பினுடைய தொடக்கத்தில் சுட்டி இருக்கும். கோப்பு ஏற்கனவே இல்லையென்றால் false எனும் மதிப்பை திரும்பத் தரும். |
X+ | Create and open for read and write. கோப்பினுடைய தொடக்கத்தில் சுட்டி இருக்கும். கோப்பு ஏற்கனவே இல்லையென்றால் false எனும் மதிப்பை திரும்பத் தரும். |
கோப்புகளை மூடுதல் (Closing Files)
கோப்பு ஒருமுறை திறக்கப்பட்டுவிட்டால் அந்த கோப்பை fclose() function -ஐ பயன்படுத்தி மூட முடியும். fclose() function ஒரே ஒரு உள்ளீடை மட்டும் பெற்றுக்கொள்கிறது.
மேலே நாம் பார்த்த தகவல்களைக் கொண்டு ஒரு நிரலை உதாரணமாகப் பார்ப்போம்.
<?php
$fileHandle = fopen(‘/tmp/phpintamil.txt’, ‘w+’) or die(“Can’t open the file”);
fclose($fileHandle);
?>
வெளியீடு
மேலே உள்ள நிரல் /tmp/ அடைவிற்குள் phpintamil.txt எனும் கோப்பை உருவாக்குகிறது. இங்கு நாம் w+ எனும் பண்பைப் பயன்படுத்தியிருக்கிறோம். w+ பண்பு கோப்பு ஏற்கனவே உருவாக்கப்படவில்லையென்றால், புதிதாக ஒரு கோப்பை உருவாக்குகிறது. படித்தல் மற்றும் எழுதுதல் அனுமதியையும் அளிக்கிறது. Fclose() function கோப்பை மூடுகிறது.
கோப்பில் எழுதுதல் (Writiong to aFile)
கோப்பு உருவாக்கப்பட்டு, திறக்கப்பட்டவுடன் அடுத்த வேலை என்னவென்றால் அந்த கோப்பில் தகவல்களை எழுதுவது. Fwrite() மற்றும் fputs() funtions இந்த வேலையைச் செய்ய உதவுகிறது. Fwrite() இரண்டு உள்ளீடுகளைப் பெற்று கொள்கிறது. முதலாவதாக Fopen() function க்கான variable – ஐயும், இரண்டாவதாக கோப்பில் எழுதுவதற்குண்டான தகவல் சரத்தையும் எடுத்துக் கொள்கிறது.
<?php
$myFile = fopen(‘/tmp/phpintamil.txt’ , ‘w+’) or die(“Can’t Open the file.”);
$myFileWrite = fwrite ( $myFile, “Free Open Source Software” );
if ( $myFileWrite ) {
echo “Data Written Successfully.<br>”;
}
else {
echo “Data Write Failed.<br>”;
}
fclose($myFile);
?>
வெளியீடு
கோப்பிலிருந்து தகவல்களைப் படித்தல் (Reading From a File)
fread() functionஐ பயன்படுத்தி கோப்பிலிருந்து தகவல்களை படிக்க முடியும். fread() function இரண்டு உள்ளீடுகளை பெற்றுக் கொள்கிறது. முதலாவதாக கோப்பைத் திறப்பதற்கான variable – ஐயும், இரண்டாவதாக எத்தனை byte – களை கோப்பிலிருந்து படிக்க வேண்டும் என்பதையும் பெற்றுக் கொள்கிறது.
<?php
$fileOpen = fopen(‘/tmp/phpintamil.txt’ , ‘w+’) or die (“Can’t Open the File”);
fwrite ($fileOpen, “Linux will rule the world.”);
fclose($fileOpen);
$fileOpen = fopen(‘/tmp/phpintamil.txt’ , ‘r’) or die (“Can’t open the file.”);
$fileRead = fread ($fileOpen, 1024);
echo “<b>Data from phpintamil.txt file</b><br>” . $fileRead;
?>
வெளியீடு
இங்கு die() function எதற்கு பயன்படுத்தப்படுகிறதென்றால், ஒருவேளை கோப்பு திறக்கப்பட முடியவில்லையென்றால் அதில் கொடுக்கப்பட்டுள்ள செய்தியை வெளியிடும். இது மற்ற function – கள் கோப்பைத் திறப்பதற்கு முற்படுவதைத் தடுக்கிறது.
கோப்பு இருக்கிறதா என சோதித்தல் (Checking Wheter a File Exists)
கோப்பு முறைமையில் கோப்பு இருக்கிறதா இல்லையா என்பதை சோதிப்பதற்கு file_exists() function பயன்படுகிறது. கோப்பினுடைய path – ஐ மட்டும் file_exists() function பெற்றுக்கொள்கிறது. கோப்பு இல்லையென்றால் false என்பதையும் , கோப்பு இருந்தால் true என்பதையும் வெளியீடாக தருகிறது.
<?php
if ( file_exists(‘/tmp/phpintamil.txt’) ) {
echo “File Exist.”;
}
else {
echo “File Doen’t Exist.”;
}
?>
வெளியீடு
கோப்புகளை பிரதியெடுத்தல், நகர்த்துதல் மற்றும் அழித்தல்(Moving, Copying and Deleting Files)
copy() funtion கோப்புகளை பிரதியெடுக்கவும், rename() function பெயரை மாற்றவும், unlink() function கோப்பை நீக்கவும் பயன்படுகிறது.
Copy
<?php
if ( copy(‘/tmp/practice.old’ , ‘/tmp/practice’) ) {
echo “Copy Successfully<br>”;
}
?>
Rename
<?php
if ( rename( ‘/tmp/practice.txt’ , ‘/tmp/practice.old’) ) {
echo “Renamed Successfully<br>”;
}
?>
Delete
<?php
if ( unlink(‘/tmp/practice.txt’) ) {
echo “Delete Successfully<br>”;
}
?>
கோப்புகளின் பண்புகளை அணுகுதல்(Accessing File Attributes)
கோப்பு எப்பொழுது உருவாக்கப்பட்டது, கோப்பின் அளவு, கோப்பு படிக்கக்கூடியதாக இருக்கிறதா அல்லது இல்லையா என்பவைகளைப் போன்று கோப்பின் பல்வேறு பண்புகளைப் அணுகுவதற்கு PHP வழிவகை செய்கிறது.
கோப்புகளைப் பற்றிய முழு விபரங்களையும் PHP யினுடைய stat() மற்றும் fstat() செய்லகூறுகள்(functions) நமக்கு அளிக்கின்றன. கோப்புகளைப் பற்றிய நிறைய விபரங்களை அளிப்பதால், அந்த தகவல்கள் ஒரு associative array -யில் சேமிக்கப்படுகிறது. அந்த array யிலிருந்து நாம் நமக்கு தேவையான தகவல்களை மட்டும் பெற்றுக்கொள்ளலாம்.
stat() மற்றும் fstat() ஆகிய இரண்டு function களும் ஒற்றை உள்ளீட்டையே பெற்றுக்கொள்கின்றன. Stat() function -க்கு கோப்பினுடைய முழு பாதையையும்(full path of file), fstat() function -க்கு fopen() மூலம் ஒரு மாறியில் மதிப்பை கொடுத்துவிட்டு அதன்பின் அந்த மாறியின் மதிப்பை உள்ளீடாக கொடுக்க வேண்டும்.
Key | Description |
Dev | Device Number |
Ino | Inode number |
Mode | Inode protection mode |
Nlink | Number of links |
Uid | User ID of owner |
Gid | Group ID of owner |
Rdev | Inode device type |
Size | Size in bytes |
Atime | Last access (Unix timestamp) |
Mtime | Last modified (Unix timestamp) |
Ctime | Last inode change (Unix timestamp) |
Blksize | Blocksize of filesystem IO (platform dependent) |
Blocks | Number of blocks allocated |
கீழ்காணும் நிரலைப் பாருங்கள்
<?php
$results = stat (“/tmp/phpintamil.txt”);
$fileNew = fopen(“/tmp/phpintamil.txt”, ‘r’);
$fileDetails = fstat($fileNew);
echo “<b>Using stat() function</b><br>”;
echo “File Size is : $results[size] bytes<br>”;
echo “File last modified on $results[mtime]<br>”;
echo “File Occupies $results[blocks] filesystem blocks<br>”;
echo “<b>Using fstat() function</b><br>”;
echo “File Size is : $fileDetails[size] bytes<br>”;
echo “File last modified on $fileDetails[mtime]<br>”;
echo “File Occupies $fileDetails[blocks] filesystem blocks<br>”;
fclose($fileDetails);
?>
நிரலின் வெளியீடு
மேலும், கோப்புகளின் அணுகுதல் அனுமதிகளையும் (access rights ) நாம் தெரிந்து தெரிந்து கொள்ள முடியும். is_readable() மற்றும் is_writable() ஆகிய இரண்டு function களும் இதற்கு பயன்படுகின்றன. கோப்பினுடைய பாதையை உள்ளீடாகப் பெற்றுக்கொண்டு true or false ஆகிய மதிப்புகளில் ஏதேனும் ஒன்றை வெளியீடாக தருகிறது.
வெளியீட்டு வைப்பகம் (Output Buffering)
தகவல்தளத்திலிருந்து தகவல்களைப் பெறுவதற்கு தாமதமாகும் நேரங்களில் பயனருக்கு தகவலை தெரிவிக்கவும் நேரடியாக உள்ளடக்கங்களை output stream -க்கு அனுப்பவும் output buffering mechanism பயன்படுகிறது.
Output Buffering ஐத் தொடங்க ob_start() function பயன்படுத்தப்படுகிறது. ob_start() function -க்கு எந்தவொரு உள்ளீட்டை அளிக்காமலும் நாம் பயன்படுத்தலாம். ஆனாலும் மூன்று optional உள்ளீடுகளைப் கொடுக்கலாம்.
1.callback funtion
2.bytes
3.delete buffer
Buffer-னுடைய தகவல்கள் ob_flush() function -ஐப் பயன்படுத்தி வெளித்தள்ளப்படுகிறது. இதற்கு ob_end_flush() function ஐயும் இதற்கு பயன்படுத்திக் கொள்ளலாம்.
ob_clean() function ஐப் பயன்படுத்தி buffer இன் தகவல்களை நம்மால் அழிக்க முடியும். ob_get_contents() function -ஐப் பயன்படுத்தி buffer -இல் இருக்கும் தகவல்களை பெற்றுக்கொள்ளலாம்.
கீழே இருக்கும் நிரலைப் பாருங்கள்
<?php
echo “<b>Before Using ob_start() function</b><br>”;
ob_start(); //start buffering
echo “This content will be buffered<br>”; //write some content to the buffer
echo “<b>Display buffered content using ob_get_contents() function</b></br?”;
echo “<br>” . ob_get_contents();
echo “<br>”;
ob_end_flush(); //flush the output from the buffer
echo “<b>After Using ob_end_flush() function</b><br>”;
echo ob_get_contents();
?>
இதன் வெளியீடு