Расширения статистика в php

stat

Собирает статистическую информацию о файле filename . Если filename является символической ссылкой, информация собирается о самом файле, а не ссылке. До PHP 7.4.0 в Windows NTS в данном случае строил статистику size , atime , mtime и ctime из символьной ссылки.

Функция lstat() идентична функции stat() за исключением того, что в данном случае она вернёт информацию о самой символической ссылке.

Список параметров

Возвращаемые значения

Формат результата работы функций stat() и fstat()

Числовой Ассоциативный Описание
0 dev номер устройства ***
1 ino номер inode ****
2 mode режим защиты inode
3 nlink количество ссылок
4 uid userid владельца *
5 gid groupid владельца *
6 rdev тип устройства, если устройство inode
7 size размер в байтах
8 atime время последнего доступа (временная метка Unix)
9 mtime время последней модификации (временная метка Unix)
10 ctime время последнего изменения inode (временная метка Unix)
11 blksize размер блока ввода-вывода файловой системы **
12 blocks количество используемых 512-байтных блоков **

* В Windows это всегда будет 0 .

** Доступен только на системах, поддерживающих тип st_blksize — другие системы (например, Windows) вернут -1 .

*** В Windows, начиная с PHP 7.4.0, это серийный номер тома, содержащего файл, который представляет собой 64-разрядное целое число без знака, поэтому может переполниться в 32-разрядных системах. Ранее это было числовое представление буквы диска (например, 2 для C: ) для stat() и 0 для lstat() .

**** В Windows, начиная с PHP 7.4.0, идентификатор, связанный с файлом, который представляет собой 64-разрядное целое число без знака, может переполниться в 32-разрядных системах. Ранее он всегда был 0 .

Читайте также:  Как поставить на фон картинку в HTML

Значение mode содержит информацию, читаемую несколькими функциями. При записи в восьмеричном виде, начиная справа, первые три цифры возвращаются функцией chmod() . Следующая цифра игнорируется PHP. Следующие две цифры указывают тип файла:

mode типов файлов
mode в восьмеричном виде Значение
0120000 символическая ссылка
0100000 обычный файл
0060000 блочное устройство
0040000 директория
0010000 fifo

Так, например, обычный файл может быть 0100644 , а директория может быть 0040755 .

В случае ошибки stat() возвращает false .

Замечание: Так как тип integer в PHP является целым числом со знаком и многие платформы используют 32-х битные целые числа, то некоторые функции файловых систем могут возвращать неожиданные результаты для файлов размером больше 2 Гб.

Ошибки

При неудачном выполении будет сгенерирована ошибка уровня E_WARNING .

Список изменений

Версия Описание
7.4.0 В Windows номер устройства теперь является серийным номером тома, содержащего файл и номер inode — это идентификатор, связанный с файлом.
7.4.0 Статистика символьных ссылок size , atime , mtime и ctime всегда соответствует статистике целевого объекта. Это было ранее не характерно для NTS сборки на Windows.

Примеры

Пример #1 Пример использования stat()

/* Получаем статистику файла */
$stat = stat ( ‘C:\php\php.exe’ );

/*
* Выводим последнее время доступа к файлу, это то же самое, что и
* вызов fileatime()
*/
echo ‘Последнее время доступа: ‘ . $stat [ ‘atime’ ];

/*
* Выводим время изменения файла, это то же самое, что и
* вызов filemtime()
*/
echo ‘Время изменения: ‘ . $stat [ ‘mtime’ ];

/* Выводим номер устройства */
echo ‘Номер устройства: ‘ . $stat [ ‘dev’ ];
?>

Пример #2 Использование информации из stat() вместе с touch()

/* Получаем статистику файла */
$stat = stat ( ‘C:\php\php.exe’ );

/* Удалось получить эту статистику? */
if (! $stat ) echo ‘вызов stat() не удался. ‘ ;
> else /*
* Мы хотим увеличить время последнего доступа к файлу
* на 1 неделю вперед.
*/
$atime = $stat [ ‘atime’ ] + 604800 ;

/* Касаемся файла */
if (! touch ( ‘some_file.txt’ , time (), $atime )) echo ‘Не удалось коснуться файла. ‘ ;
> else echo ‘touch() выполнился успешно. ‘ ;
>
>
?>

Примечания

Замечание:

Учтите, что обработка времени может отличаться в различных файловых системах.

Замечание: Результаты этой функции кешируются. Более подробную информацию смотрите в разделе clearstatcache() .

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми обертками url. Список оберток, поддерживаемых семейством функций stat() , смотрите в разделе Поддерживаемые протоколы и обертки.

Смотрите также

  • lstat() — Возвращает информацию о файле или символической ссылке
  • fstat() — Получает информацию о файле, используя открытый файловый указатель
  • filemtime() — Возвращает время последнего изменения файла
  • filegroup() — Получает идентификатор группы файла

Источник

stat

Собирает статистическую информацию о файле filename . Если filename является символической ссылкой, информация собирается о самом файле, а не ссылке.

Функция lstat() идентична функции stat() за исключением того, что в данном случае она вернёт информацию о самой символической ссылке.

Список параметров

Возвращаемые значения

Формат результата работы функций stat() и fstat()

Числовой Ассоциативный Описание
0 dev номер устройства
1 ino номер inode *
2 mode режим защиты inode
3 nlink количество ссылок
4 uid userid владельца *
5 gid groupid владельца *
6 rdev тип устройства, если устройство inode
7 size размер в байтах
8 atime время последнего доступа (временная метка Unix)
9 mtime время последней модификации (временная метка Unix)
10 ctime время последнего изменения inode (временная метка Unix)
11 blksize размер блока ввода-вывода файловой системы **
12 blocks количество используемых 512-байтных блоков **

* В Windows это всегда будет 0.

** Доступен только на системах, поддерживающих тип st_blksize — другие системы (например, Windows) вернут -1.

В случае ошибки stat() возвращает FALSE .

Замечание: Так как тип integer в PHP является целым числом со знаком и многие платформы используют 32-х битные целые числа, то некоторые функции файловых систем могут возвращать неожиданные результаты для файлов размером больше 2ГБ.

Ошибки

В случае ошибки будет сгенерирована ошибка уровня E_WARNING .

Примеры

Пример #1 Пример использования stat()

/* Получаем статистику файла */
$stat = stat ( ‘C:\php\php.exe’ );

/*
* Выводим последнее время доступа к файлу, это тоже самое, что и
* вызов fileatime()
*/
echo ‘Последнее время доступа: ‘ . $stat [ ‘atime’ ];

/*
* Выводим время изменения файла, это тоже самое, что и
* вызов filemtime()
*/
echo ‘Время изменения: ‘ . $stat [ ‘mtime’ ];

/* Выводим номер устройства */
echo ‘Номер устройства: ‘ . $stat [ ‘dev’ ];
?>

Пример #2 Использование информации из stat() вместе с touch()

/* Получаем статистику файла */
$stat = stat ( ‘C:\php\php.exe’ );

/* Удалось получить эту статистику? */
if (! $stat ) echo ‘вызов stat() не удался. ‘ ;
> else /*
* Мы хотим увеличить время последнего доступа к файлу
* на 1 неделю вперед.
*/
$atime = $stat [ ‘atime’ ] + 604800 ;

/* Касаемся файла */
if (! touch ( ‘some_file.txt’ , time (), $atime )) echo ‘Не удалось коснуться файла. ‘ ;
> else echo ‘touch() выполнился успешно. ‘ ;
>
>
?>

Примечания

Замечание:

Учтите, что обработка времени может отличаться в различных файловых системах.

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache() .

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми обертками url. Список оберток, поддерживаемых семейством функций stat() , смотрите в Поддерживаемые протоколы и обработчики (wrappers).

Смотрите также

  • lstat() — Возвращает информацию о файле или символической ссылке
  • fstat() — Получает информацию о файле используя открытый файловый указатель
  • filemtime() — Возвращает время последнего изменения файла
  • filegroup() — Получает идентификатор группы файла

Источник

stat

Gathers the statistics of the file named by filename . If filename is a symbolic link, statistics are from the file itself, not the symlink. Prior to PHP 7.4.0, on Windows NTS builds the size , atime , mtime and ctime statistics have been from the symlink, in this case.

lstat() is identical to stat() except it would instead be based off the symlinks status.

Parameters

Return Values

stat() and fstat() result format

Numeric Associative Description
0 dev device number ***
1 ino inode number ****
2 mode inode protection mode *****
3 nlink number of links
4 uid userid of owner *
5 gid groupid of owner *
6 rdev device type, if inode device
7 size size in bytes
8 atime time of last access (Unix timestamp)
9 mtime time of last modification (Unix timestamp)
10 ctime time of last inode change (Unix timestamp)
11 blksize blocksize of filesystem IO **
12 blocks number of 512-byte blocks allocated **

* On Windows this will always be 0 .

** Only valid on systems supporting the st_blksize type — other systems (e.g. Windows) return -1 .

*** On Windows, as of PHP 7.4.0, this is the serial number of the volume that contains the file, which is a 64-bit unsigned integer, so may overflow. Previously, it was the numeric representation of the drive letter (e.g. 2 for C: ) for stat() , and 0 for lstat() .

**** On Windows, as of PHP 7.4.0, this is the identifier associated with the file, which is a 64-bit unsigned integer, so may overflow. Previously, it was always 0 .

***** On Windows, the writable permission bit is set according to the read-only file attribute, and the same value is reported for all users, group and owner. The ACL is not taken into account, contrary to is_writable() .

The value of mode contains information read by several functions. When written in octal, starting from the right, the first three digits are returned by chmod() . The next digit is ignored by PHP. The next two digits indicate the file type:

mode file types
mode in octal Meaning
0140000 socket
0120000 link
0100000 regular file
0060000 block device
0040000 directory
0020000 character device
0010000 fifo

So for example a regular file could be 0100644 and a directory could be 0040755 .

In case of error, stat() returns false .

Note: Because PHP’s integer type is signed and many platforms use 32bit integers, some filesystem functions may return unexpected results for files which are larger than 2GB.

Errors/Exceptions

Upon failure, an E_WARNING is emitted.

Changelog

Version Description
7.4.0 On Windows, the device number is now the serial number of the volume that contains the file, and the inode number is the identifier associated with the file.
7.4.0 The size , atime , mtime and ctime statistics of symlinks are always those of the target. This was previously not the case for NTS builds on Windows.

Источник

Оцените статью