How to get the latest file name, or the file path that is added into a directory?
$path = "/path/to/my/dir";
$latest_ctime = 0;
$latest_filename = '';
$d = dir($path);
while (false !== ($entry = $d->read())) {
$filepath = "{$path}/{$entry}";
// could do also other checks than just checking whether the entry is a file
if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
$latest_ctime = filectime($filepath);
$latest_filename = $entry;
}
}
// now $latest_filename contains the filename of the file that changed last
Answer:
$dir = dirname(__FILE__).DIRECTORY_SEPARATOR;
$lastMod = 0;
$lastModFile = '';
foreach (scandir($dir) as $entry) {
if (is_file($dir.$entry) && filectime($dir.$entry) > $lastMod) {
$lastMod = filectime($dir.$entry);
$lastModFile = $entry;
}
}
Answer:
filectime is for when metadata like chmod values are changed.
filemtime is for actual content change.
Answer:
$dir = "/path/to/Your/dir";
$pattern = '\.(zip|ZIP|pdf|PDF)$'; // check only file with these ext.
$newstamp = 0;
$newname = "";
if ($handle = opendir($dir)) {
while (false !== ($fname = readdir($handle))) {
// Eliminate current directory, parent directory
if (ereg('^\.{1,2}$',$fname)) continue;
// Eliminate other pages not in pattern
if (! ereg($pattern,$fname)) continue;
$timedat = filemtime("$dir/$fname");
if ($timedat > $newstamp) {
$newstamp = $timedat;
$newname = $fname;
}
}
}
closedir ($handle);
// $newstamp is the time for the latest file
// $newname is the name of the latest file
// print last mod.file - format date as you like
print $newname . " - " . date( "Y/m/d", $newstamp);
Answer:
Here’s how you can do it using DirectoryIterator:
foreach(new DirectoryIterator('/path/to/read') as $item) {
if ($item->isFile() && (empty($file) || $item->getMTime() > $file->getMTime())) {
$file = clone $item;
}
}
The resulting contents of $file
is an instance of the DirectoryIterator class and as such you have access to all of it’s methods. To simply get the full path of the result you can do:
echo $file->getPathname();
Answer:
Enumerate all directory files, get the filemtime() of each and you are done.
Answer:
If working on linux, take a look at http://us2.php.net/manual/en/book.inotify.php. This assumes you leave a script waiting & logging in the background these events.
Answer:
My solution with PHP 5:
$dir = "/path/to/Your/dir";
$arraydir =scandir($dir, 1);
echo "arraydir 0: " . $arraydir[0] . "<br/>"; // 1. new file
echo "arraydir 1: " . $arraydir[1] . "<br/>"; // 2. new file
echo "arraydir elements: " . count($arraydir) . "<br/>";
(search words DE: neuste und zweitneuste Datei eines Ordners anzeigen mit PHP )