logo

internet.com
Join the free
WDVL newsletter!

home

Getting Information About a File With stat

Getting Information About a File With stat

  • The stat function produces useful information about files that you can use in your file management functions. The stat function returns a thirteen-element array of file information using the syntax:

    open ([FILE_HANDLE_NAME], "[filename]")|| 
         &CgiDie ("Can't open file");
         ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,   
                $atime, $mtime, $ctime, $blksize, $blocks) =   
                stat([FILE_HANDLE_NAME]);
         close ([FILE_HANDLE_NAME]);
    

  • The following table describes the elements returned by stat

Variable Description
$dev The device that the file resides on
$ino The inode for this file
$mode The permissions for the file
$nlink The number of hard links to the file
$uid The numerical user ID for the file owner
$gid The numerical group ID for the file owner
$rdev The device type if the file is a device
$size The size of the file in bytes
$atime When the file was last accessed
$mtime When the file was last modified
$ctime When the file status was last changed
$blksize The optimal block size for i/o operations on the file system containing the file
$blocks The number of clocks allocated to the file

  • For the most part, CGI scripts will need to take advantage only of $atime, $mtime, $ctime, $mode and $size. $size and $mode are fairly straight forward in usage. However, the usage of the "time" variables is a bit subtle.

  • The time values returned by stat are formatted in terms of the number of non-leap seconds since January 1, 1970, UTC. Thus, the stat function might yield a result such as $mtime is equal to "838128443". Likewise, the time function returns the current time in the same format. Thus, the scalar variable $current_time is assigned the current time with the following syntax:

    $current_time = time; 
    

  • Once you have both the age of the file and the current time, you can use arithmetic to compare them for various operations such as the pruning of a Session Files directory after a certain amount of time.

  • For example, the following code snippet can be used to prune the file "289576893.dat" if it is older than an administratively-defined amount of time.

    $seconds_to_save = 3600;
    $age_of_file = $current_time - $mtime ;
    if ($age_of_file > $seconds_to_save)
       {
       unlink ("289576893.dat");
       }
    

If you are interested in what the actual day is, and not the number of seconds since 1970, you must use the localtime function to convert the value to a more human-recognizable form using the syntax:

($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime (time);

  • The following code gets the same information for an $mtime value extracted from stat:

    ($sec, $min, $hour, $mday, $mon, $year,
    $wday, $yday, $isdst) = localtime ($mtime);
    

Additional Resources:

File Tests
Table of Contents
Opening, Reading and Closing Directories

Up to => Home / Authoring / Scripting / Tutorial

Instantly look up a "techie" word using Webopedia!!


internet.com
e-commerce
WebDeveloper Network



Copyright 1999 internet.com Corporation. Legal Notices. Privacy Policy.

www.internet.com