Я нуждаюсь в том, чтобы узнать древность файла. Из-за которого я смотрел в PHP только, смогла быть полученной дата последнего изменения, я тестировал они следующий функции:
http://php.net/manual/es/function.fileatime.php
http://php.net/manual/es/function.filemtime.php
http://php.net/manual/es/function.fstat.php
Они знают какую-то форму?
К несчастью опора для стоимости btime
( birth украл или датируй creaciГіn/nacimiento) не estГЎ осуществленный aГєn в PHP (по крайней мере даже она versiГіn 7.3), из-за которого necesitarГЎs помощь внешней программы, чтобы подтверждать вышеупомянутую стоимость.
#include <stdio.h>
#include <unistd.h>
#include <sys/syscall.h>
#include <linux/stat.h>
#include <linux/fcntl.h>
/* Puedes borrar esta función si usas glibc 2.28 o superior */
ssize_t statx(int dfd, const char *filename, unsigned flags,
unsigned int mask, struct statx *buffer)
{
return syscall(__NR_statx, dfd, filename, flags, mask, buffer);
}
int main(int argc, char **argv)
{
struct statx stx;
int ret;
/* Iteramos por cada archivo proporcionado por parámetro */
for (argv++; *argv; argv++) {
/* Realizamos la llamada al sistema */
ret = statx(AT_FDCWD, *argv, AT_SYMLINK_NOFOLLOW, STATX_ALL, &stx);
if (ret < 0) {
perror(*argv);
return 1;
}
/* Mostramos la marca de tiempo junto con los microsegundos */
printf("%llu.%09u\n", stx.stx_btime.tv_sec, stx.stx_btime.tv_nsec);
}
return 0;
}
Сейчас мы будем должны составлять ее aplicaciГіn используя:
gcc -o btime -Wall btime.c
мы Можем копировать выполнимый произведенный файл btime
в algГєn каталог path (как /usr/local/bin/
) или оставлять это в каталоге работы PHP, которую мы будем производить:
<?php
function filebtime($archivo) {
$ret = 0;
$btime = [];
exec('./btime ' . escapeshellarg($archivo) . ' 2>&1', $btime, $ret);
/* Si falló el programa externo o no devolvió datos devolvemos -1 */
return (($ret !== 0) || (count($btime) === 0)) ? -1 : floatval($btime[0]);
}
echo filebtime('prueba'), PHP_EOL;
Пример с файлом доказательства:
$ touch prueba
$ php stat.php
1573199555.1128333
$ stat prueba
Fichero: prueba
Tamaño: 5 Bloques: 8 Bloque E/S: 4096 fichero regular
Dispositivo: fd00h/64768d Nodo-i: 1049176 Enlaces: 1
Acceso: (0644/-rw-r--r--) Uid: ( 1000/ redstar) Gid: ( 1000/ redstar)
Acceso: 2019-11-08 08:23:29.421929356 +0100
Modificación: 2019-11-08 08:23:29.421929356 +0100
Cambio: 2019-11-08 08:23:29.421929356 +0100
Creación: -
$ touch prueba
$ stat prueba
Fichero: prueba
Tamaño: 5 Bloques: 8 Bloque E/S: 4096 fichero regular
Dispositivo: fd00h/64768d Nodo-i: 1049176 Enlaces: 1
Acceso: (0644/-rw-r--r--) Uid: ( 1000/ redstar) Gid: ( 1000/ redstar)
Acceso: 2019-11-08 09:21:35.499843986 +0100
Modificación: 2019-11-08 09:21:35.499843986 +0100
Cambio: 2019-11-08 09:21:35.499843986 +0100
Creación: -
$ php stat.php
1573199555.1128333
PD1: funciГіn statx()
был добавлен в glibc 2.28 apoyГЎndose в призыве к системе, если estГЎ доступный или в travГ©s fstatat64()
в противоположном случае. Если твоя операционная система использует одну versiГіn недавний glibc, ты можешь удалять ее definiciГіn ее funciГіn (видеть комментарий в cГіdigo).
PD2: Вызов системы statx
был добавлен в ней versiГіn nГєcleo Linux 4.11, из-за того, что, если nГєcleo твоей операционной системы он очень старый, возможно, что cГіdigo оно не функционирует, если ты не используешь ее implementaciГіn statx
одной versiГіn glibc недавние .