PHP Conference Japan 2024

fstat

(PHP 4, PHP 5, PHP 7, PHP 8)

fstat Sammelt Informationen über eine Datei mittels eines offenen Dateizeigers

Beschreibung

fstat(resource $stream): array|false

Sammelt die Statistiken der Datei, die durch den Dateizeiger stream geöffnet wurde. Diese Funktion ist ähnlich zur Funktion stat(), mit dem Unterschied, dass sie mit einem offenen Dateizeiger anstatt eines Dateinamens arbeitet.

Parameter-Liste

stream

Eine Dateisystemressource (resource), wie sie in der Regel von fopen() zurückgegeben wird.

Rückgabewerte

Gibt ein Array mit den Statistiken der Datei zurück. Das Format des Arrays wird auf der stat()-Handbuchseite im Detail beschrieben. Gibt bei einem Fehler false zurück.

Beispiele

Beispiel #1 fstat()-Beispiel

<?php

// öffne eine Datei
$fp = fopen("/etc/passwd", "r");

// sammle Statistiken
$fstat = fstat($fp);

// schließe die Datei
fclose($fp);

// gebe nur den assoziativen Teil aus
print_r(array_slice($fstat, 13));

?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Array
(
    [dev] => 771
    [ino] => 488704
    [mode] => 33188
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 0
    [size] => 1114
    [atime] => 1061067181
    [mtime] => 1056136526
    [ctime] => 1056136526
    [blksize] => 4096
    [blocks] => 8
)

Anmerkungen

Hinweis: Diese Funktion kann nicht mit entfernten Dateien arbeiten, da der Zugriff auf die Datei, die bearbeitet werden soll, über das Dateisystem des Servers möglich sein muss.

add a note

User Contributed Notes 2 notes

up
1
broom at alturnanetworks dot com
16 years ago
Another ftp_get_contents() approach, using a temperary stream handler. Returns file contents of remote file as string.

<?php
function ftp_get_contents ($conn_id, $remote_filename) {
//Create temp handler:
$tempHandle = fopen('php://temp', 'r+');

//Get file from FTP assuming that it exists:
ftp_fget($conn_id, $tempHandle, $remote_filename, FTP_ASCII, 0));

//Getting detailed stats to check filesize:
$fstats = fstat($tempHandle);

return
fread($tempHandle, $fstats['size']);
}
?>

(It is recommended to add some error handling)
up
0
tom at bitworks dot de
7 years ago
Remember atime will not be updated by simple read access to the file unless you take care for that in the mounting parameters of your filesystem.

Instead of atime, mtime will be delivered. But mtime only will be updated, if the contents of the file has changed.

Due to this behavior take care in your Session-System. Using session_start() will not be sufficiant to keep your sessions alive. You should write into the Session, e. g. :

$_SESSION = time();

That retriggers your mtime and atime, even if the mounting parameter for atime is set to "noatime" or is missing, dependent of the used file System.
To Top