The stat() function in PHP is an inbuilt function which is used to return information of a file. The stat(0) function returns statistics of a file which is an array with the following elements :
- [0] or [dev] - Device number
- [1] or [ino] - Inode number
- [2] or [mode] - Inode protection mode
- [3] or [nlink] - Number of links
- [4] or [uid] - User ID of owner
- [5] or [gid] - Group ID of owner
- [6] or [rdev] - Inode device type
- [7] or [size] - Size in bytes
- [8] or [atime] - Last access (as Unix timestamp)
- [9] or [mtime] - Last modified (as Unix timestamp)
- [10] or [ctime] - Last inode change (as Unix timestamp)
- [11] or [blksize] - Blocksize of filesystem IO
- [12] or [blocks] - Number of blocks allocated
The stat() function accepts the filename as a parameter and returns an array with the above-mentioned elements on success and False on failure.
If filename is a symbolic link then statistics are from the file itself, not the symlink.
Syntax:
stat(filename)
Parameters Used:
The stat() function in PHP accepts one parameter.
- filename : It specifies the filename of the file whose statistics you want to know.
Return Value:
It returns array with the above-mentioned elements on success and False on failure.
Errors And Exception
- The results of the stat() function differs from server to server.
- The result of the stat() function are cached and therefore the clearstatcache() function should be used to clear the cache.
- The stat() function generates an E_WARNING on failure.
- On Windows platforms the groupid of owner, userid of owner and inode number are always 0.
- For files which are larger than 2GB some filesystem functions may return unexpected results since PHP's integer type is signed and many platforms use 32bit integers.
Examples:
Input : $test = stat('gfg.txt');
echo 'Access time: ' .$test['atime'];
echo '
Modification time: ' .$test['mtime'];
echo '
Device number: ' .$test['dev'];
Output :Access time: 1141666750
Modification time: 1135897503
Device number: 0
Input : $test = stat('gfg.txt');
echo 'Access time: ' .$test[8];
echo '
Modification time: ' .$test[9];
echo '
Device number: ' .$test[0];
Output : Access time: 1141666750
Modification time: 1135897503
Device number: 0
Input : $test = stat('gfg.txt');
$access_time = $stat['atime'] + 18000;
if (touch($test, time(), $access_time))
{
echo 'Access time changed to 5 hours in the past!';
}
else
{
echo 'Access time could not be changed.';
}
Output : Access time changed to 5 hours in the past!
Below programs illustrate the stat() function.
Suppose there is a file named "gfg.txt"
Program 1
php
<?php
$test = stat('gfg.txt');
//using stat() along with name index to display access time
echo 'Access time: ' .$test['atime'];
//using stat() along with name index to display modification time
echo '<br />Modification time: ' .$test['mtime'];
//using stat() along with name index to display device number
echo '<br />Device number: ' .$test['dev'];
?>
Output:
Access time: 1141666750
Modification time: 1135897503
Device number: 0
Program 2
php
<?php
$test = stat('gfg.txt');
//using stat() along with number index to display access time
echo 'Access time: ' .$test[8];
//using stat() along with number index to display modification time
echo '<br />Modification time: ' .$test[9];
//using stat() along with number index to display device number
echo '<br />Device number: ' .$test[0];
?>
Output:
Access time: 1141666750
Modification time: 1135897503
Device number: 0
Program 3
php
<?php
$test = stat('gfg.txt');
//changing access time to 5 hours in the past
$access_time = $stat['atime'] + 18000;
//using touch() function to change the access time
if (touch($test, time(), $access_time))
{
echo 'Access time changed to 5 hours in the past!';
}
else
{
echo 'Access time could not be changed.';
}
?>
Output:
Access time changed to 5 hours in the past!
Reference:
http://www.php.net/manual/en/function.stat.php