- PHP функции filectime() fileatime() filemtime()
- Из документации
- Примеры
- Получим (без кэша):
- Получим (с кэшем):
- filemtime
- Список параметров
- Возвращаемые значения
- Примеры
- Ошибки
- Примечания
- Смотрите также
- PHP filemtime() Function
- Syntax
- Parameter Values
- Technical Details
- COLOR PICKER
- Report Error
- Thank You For Helping Us!
- filectime
- Список параметров
- Возвращаемые значения
- Ошибки
- Примеры
- Примечания
- Смотрите также
- User Contributed Notes 9 notes
PHP функции filectime() fileatime() filemtime()
Функции PHP filectime() fileatime() filemtime() очень похожи друг на друга. Легко запутаться, когда и какой нужно использовать — какая функция, какую метку времени получает. В этой заметке разберем что тут к чему — какие метки времени сохраняются при создании файла, какие при изменении или чтении файлов.
Из документации
filectime( $file_path ) (create) Возвращает время последнего изменения указанного файла. Изменяется при создании, изменении файла. Эта функция проверяет наличие изменений в Inode файла, и обычных изменений. Изменения Inode — это изменение разрешений, владельца, группы и других метаданных. filemtime( $file_path ) (modified) Возвращает время последнего изменения контента файла. Изменяется при изменении контента файла. fileatime( $file_path ) (access) Возвращает время последнего доступа к файлу. Изменяется при чтении файла (не всегда). Заметка: на большинстве серверах такие обновления времени доступа к файлу отключены, так как эта функция снижает производительность приложений, регулярно обращающихся к файлам.
Возвращают
Все функции кэшируют результат. Чтобы сбросить кэш используйте функцию clearstatcache() . Пример кэша. Если в одном PHP процессе сначала использовать одну из «функции», а затем изменить данные или контент файла (использовать touch() , file_put_contents() ) и попробовать снова использовать «функции», то функции вернут первый результат, хотя на самом деле он изменился.
Примеры
$file = FC_PARSER_PATH . 'info/_temp_test_file'; @ unlink( $file ); file_put_contents( $file, 'content' ); $__echo = function() use ($file)< clearstatcache(); // очищаем кэш echo time() ."\t time()\n"; echo filectime( $file ) ."\t filectime()\n"; echo filemtime( $file ) ."\t filemtime()\n"; echo fileatime( $file ) ."\t fileatime()\n"; >; $__echo(); sleep(1); echo "\n\nchmod()\n"; chmod( $file, 0777 ); $__echo(); sleep(1); echo "\n\nfile_get_contents()\n"; file_get_contents( $file ); $__echo(); sleep(1); echo "\n\nfile_put_contents()\n"; file_put_contents( $file, 'content2' ); $__echo(); echo "\n\ntouch()\n"; touch( $file, 22222222222, 33333333333 ); touch( $file, 44444444444, 55555555555 ); $__echo();
Получим (без кэша):
1540437788 time() 1540437788 filectime() 1540437788 filemtime() 1540437788 fileatime() chmod() 1540437789 time() 1540437789 filectime() 1540437788 filemtime() 1540437788 fileatime() file_get_contents() 1540437790 time() 1540437789 filectime() 1540437788 filemtime() 1540437788 fileatime() file_put_contents() 1540437791 time() 1540437791 filectime() 1540437791 filemtime() 1540437788 fileatime() touch() 1540437791 time() 1540437791 filectime() 44444444444 filemtime() 55555555555 fileatime()
По результату можно сказать:
Функция | Меняет | Не меняет |
---|---|---|
chmod() | ctime | mtime , atime |
file_put_contents() | ctime и mtime | atime |
touch() | ctime , mtime , atime | — |
file_get_contents() | может менять atime | ctime , mtime |
file_get_contents() ничего не меняет в этом примере, потому что изменение atime почти всегда отключено на сервере для производительности.
Получим (с кэшем):
1540437873 time() 1540437873 filectime() 1540437873 filemtime() 1540437873 fileatime() chmod() 1540437874 time() 1540437873 filectime() 1540437873 filemtime() 1540437873 fileatime() file_get_contents() 1540437875 time() 1540437873 filectime() 1540437873 filemtime() 1540437873 fileatime() file_put_contents() 1540437876 time() 1540437873 filectime() 1540437873 filemtime() 1540437873 fileatime() touch() 1540437876 time() 1540437873 filectime() 1540437873 filemtime() 1540437873 fileatime()
До этого из: PHP
filemtime
Данная функция возвращает время последней записи блоков файла, иначе говоря, изменения содержания файла.
Список параметров
Возвращаемые значения
Возвращает время последнего изменения указанного файла, или FALSE в случае возникновения ошибки. Время возвращается в формате временной метки Unix, который подходит для передачи в качестве аргумента функции date() .
Примеры
Пример #1 Пример использования функции filemtime()
// Пример вывода: В последний раз файл somefile.txt был изменен: December 29 2002 22:16:23.
?php
$filename = ‘somefile.txt’ ;
if ( file_exists ( $filename )) echo «В последний раз файл $filename был изменен: » . date ( «F d Y H:i:s.» , filemtime ( $filename ));
>
?>
Ошибки
В случае неудачного завершения работы генерируется ошибка уровня E_WARNING .
Примечания
Замечание:
Учтите, что обработка времени может отличаться в различных файловых системах.
Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache() .
Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми обертками url. Список оберток, поддерживаемых семейством функций stat() , смотрите в Поддерживаемые протоколы и обработчики (wrappers).
Смотрите также
- filectime() — Возвращает время изменения индексного дескриптора файла
- stat() — Возвращает информацию о файле
- touch() — Устанавливает время доступа и модификации файла
- getlastmod() — Определение времени последней модификации страницы
PHP filemtime() Function
The filemtime() function returns the last time the file content was modified.
Note: The result of this function is cached. Use clearstatcache() to clear the cache.
Syntax
Parameter Values
Technical Details
Return Value: | The last time the file content was modified as a Unix timestamp, FALSE on failure |
---|---|
PHP Version: | 4.0+ |
❮ PHP Filesystem Reference
COLOR PICKER
Report Error
If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:
Thank You For Helping Us!
Your message has been sent to W3Schools.
Top Tutorials
Top References
Top Examples
Get Certified
W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.
filectime
Возвращает время изменения индексного дескриптора (inode) файла.
Список параметров
Возвращаемые значения
Возвращает время последнего изменения файла или false в случае возникновения ошибки. Время возвращается в формате временной метки Unix.
Ошибки
В случае неудачного завершения работы генерируется ошибка уровня E_WARNING .
Примеры
Пример #1 Пример использования функции filectime()
// Пример вывода: Файл somefile.txt в последний раз был изменён: December 29 2002 22:16:23.
$filename = ‘somefile.txt’ ;
if ( file_exists ( $filename )) echo «Файл $filename в последний раз был изменён: » . date ( «F d Y H:i:s.» , filectime ( $filename ));
>
Примечания
Замечание:
Примечание. На большинстве платформ Unix, файл считается изменённым, если изменены данные его индексного дескриптора, что включает информацию о правах на файл, о его владельце, группе и другие метаданные, содержащиеся в индексном дескрипторе. Обратитесь также к описаниям функций filemtime() (данная функция полезна для создания сообщений типа: «Последнее обновление от . » на веб-страницах) и fileatime() .
Замечание:
Учтите также, что в некоторых описаниях работы Unix ctime представляется как время создания файла. Это неверно. В большинстве файловых систем Unix понятие времени создания файла отсутствует.
Замечание:
Учтите, что обработка времени может отличаться в различных файловых системах.
Замечание: Результаты этой функции кешируются. Более подробную информацию смотрите в разделе clearstatcache() .
Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми обёртками url. Список обёрток, поддерживаемых семейством функций stat() , смотрите в разделе Поддерживаемые протоколы и обёртки.
Смотрите также
User Contributed Notes 9 notes
This method gets all the files in a directory, and echoes them in the order of the date they were added (by ftp or whatever).
function dirList ( $directory , $sortOrder )
//Get each file and add its details to two arrays
$results = array();
$handler = opendir ( $directory );
while ( $file = readdir ( $handler )) <
if ( $file != ‘.’ && $file != ‘..’ && $file != «robots.txt» && $file != «.htaccess» ) $currentModified = filectime ( $directory . «/» . $file );
$file_names [] = $file ;
$file_dates [] = $currentModified ;
>
>
closedir ( $handler );
//Sort the date array by preferred order
if ( $sortOrder == «newestFirst» ) arsort ( $file_dates );
>else asort ( $file_dates );
>
//Match file_names array to file_dates array
$file_names_Array = array_keys ( $file_dates );
foreach ( $file_names_Array as $idx => $name ) $name = $file_names [ $name ];
$file_dates = array_merge ( $file_dates );
//Loop through dates array and then echo the list
foreach ( $file_dates as $file_dates ) $date = $file_dates ;
$j = $file_names_Array [ $i ];
$file = $file_names [ $j ];
$i ++;
echo «File name: $file — Date Added: $date .
«»;
>
I hope this is useful to somebody.