![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 181 Pomógł: 14 Dołączył: 4.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam problem z funkcją fileatime, ponieważ sprawdzałem już na kilku hostingach (w tym localhost) i na żadnym z nich czas nie zmieniał się pomimo otwierania pliku w przeglądarce. Sprawdzałem nawet otwierając plik normalnie w środowisku, czy edytując go. Zmieniał się tylko czas z filemtime. Chciałem zrobić hosting obrazków na potrzeby małej grupki osób i zainteresowałem się tą funkcją, ponieważ chciałem zrobić to tak, że pliki byłyby kasowane np. 30 dni po ostatnim ich obejrzeniu. Ale nie wiem jak pobierać czas, skoro ten czas się nie zmienia. Są do tego jakieś inne funkcje? Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Po głębszym przyjrzeniu się problemowi okazało się, że także u mnie zarówno fileatime, jak i stat zachowują się, delikatnie mówiąc, dziwnie. W związku z tym zacząłem zgłębiać temat, przy czym ograniczyłem się do Linuksa (co nie powinno być problemem, bo większość hostingów i vpsów to jakiś tam Linux).
Okazało się, że za taki "dziwny" stan rzeczy (taki jak Ty opisujesz, jak i taki jak ja zauważyłem), odpowiada... kernel Linuksa. Niemniej, da się go przekonać, by działał tak jak trzeba. Ale po kolei. Mając filesystem zamontowany z domyślnymi opcjami działa to jak w opisie. Domyślne opcje to u mnie (z /proc/mounts): Kod /[device] /[mountpoint] ext3 rw,relatime,errors=continue,data=ordered 0 0 Wczytując się w manual do atime, znalazłem: Kod atime Update inode access time for each access. See also the stricta- time mount option. noatime Do not update inode access times on this filesystem (e.g, for faster access on the news spool to speed up news servers). relatime Update inode access times relative to modify or change time. Access time is only updated if the previous access time was ear- lier than the current modify or change time. (Similar to noat- ime, but doesn't break mutt or other applications that need to know if a file has been read since the last time it was modi- fied.) norelatime Do not use relatime feature. See also the strictatime mount option. strictatime Allows to explicitly requesting full atime updates. This makes it possible for kernel to defaults to relatime or noatime but still allow userspace to override it. For more details about the default system mount options see /proc/mounts. nostrictatime Use the kernel's default behaviour for inode access time updates. Rozwiązaniem jest przemontowanie filesystemu z opcją "strictatime": Kod mount -o remount,strictatime [device|katalog] U mnie pomogło, a efekt w /proc/mounts jest taki, że zniknęło "relatime": Kod /[device] /[mountpoint] ext3 rw,errors=continue,data=ordered 0 0 Potestuj. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 04:10 |