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 $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 $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 $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://php.net/manual/en/function.stat.php