Подтвердить что ты не робот

Как определить возраст файла с помощью PHP?

Как определить возраст файла изображения в папке с помощью PHP?

Я хочу удалить более старые файлы, чем 2 часа, возможно ли это, без добавления имен меток к их именам файлов при загрузке в папку?

Если да, пожалуйста, дайте мне пример!

спасибо

4b9b3361

Ответ 1

Вы можете использовать filemtime функцию, чтобы получить последнюю измененную дату/время и использовать ее, чтобы узнать, сколько лет этот файл.

Ответ 2

if (time()-filemtime($filename) > 2 * 3600) {
  // file older than 2 hours
} else {
  // file younger than 2 hours
}

Ответ 3

Вы ищете функцию filemtime

<?php
// outputs e.g.  somefile.txt was last modified: December 29 2002 22:16:23.

$filename = 'somefile.txt';
if (file_exists($filename)) {
    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}
?>

Ответ 4

Помните, что в хранилищах NAS/SAN время файла обновленного файла может отличаться от времени PHP(), так как у этих хранилищ могут быть свои собственные часы. Я думаю, что такие конфигурации - это скорость, но это стоило мне некоторой головной боли.

Ответ 5

Я немного покопался в Интернете и Stackoverflow (PHP Как найти время, прошедшее с даты?), И вот мое решение:

Это полный ответ, дающий удобочитаемое представление о возрасте файла + проверка, чтобы увидеть, если файл 2 часа или нет.

<?php

function humanTiming ($time)
{
    // to get the time since that moment
    $time = time() - $time;

    // time unit constants
    $timeUnits = array (
        31536000 => 'year',
        2592000 => 'month',
        604800 => 'week',
        86400 => 'day',
        3600 => 'hour',
        60 => 'minute',
        1 => 'second'
    );

    // iterate over time contants to build a human 
    $humanTiming;
    foreach ($timeUnits as $unit => $text)
    {
        if ($time < $unit)
            continue;
        $numberOfUnits = floor($time / $unit);

        // human readable token for current time unit
        $humanTiming = $humanTiming.' '.$numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');

        // compute remaining time for next loop iteration
        $time -= $unit*$numberOfUnits;
    }
    return $humanTiming;
}


$filename = '/path/to/your/file.extension';

if (file_exists($filename))
{
    echo 'Now = '.date ("Y-m-d H:i:s.", time());
    echo "<br/>$filename was last modified on " . date ("Y-m-d H:i:s.", filemtime($filename));
    $time = strtotime('2010-04-28 17:25:43');
    $time = filemtime($filename);
    echo '<br/>File age is '.humanTiming($time).'.';

    $fileAge = time()-filemtime($filename);

    echo '<br/>Is file older than 2 hours? '.(($fileAge < (2*3600))?'No':'Yes').'.';
}
?>

Вот вывод на моей стороне:

Now = 2013-01-29 09:10:12.
/path/to/your/file.extension was last modified on 2013-01-29 08:07:52.
File age is 1 hour 2 minutes 20 seconds.
Is file older than 2 hours? No.

Ответ 6

Попробуйте filemtime()

Эта функция возвращает время, когда записывались блоки данных файла, то есть время, когда содержимое файла было изменено.

int filemtime ( string $filename )
  • filename: путь к файлу.
// outputs e.g.  somefile.txt was last modified: December 29 2002 22:16:23.

$filename = 'somefile.txt';
if (file_exists($filename)) {
    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}

Ответ 8

Я проверил filemtime() или filectime(). Они дадут вам изменение и время создания файла (соответственно).