2013-06-29 11 views
6

Próbuję pobrać datę ostatniej modyfikacji pliku, a następnie zaktualizować ją do bieżącego czasu, ale gdy przyjrzę się wynikowi, to uzyskać ten sam znacznik czasu w obu $ oldtime i $ newtimezmiana czasu ostatniej modyfikacji pliku za pomocą dotyku() i uzyskanie wyniku za pomocą filemtime()

$file = 'test.txt'; 
$oldtime = filemtime($file); 
touch($file, time()); 
$newtime = filemtime($file); 

echo '<h1>old</h1>'; 
print_r(getdate($oldtime)); 
echo '<h1>new</h1>'; 
print_r(getdate($newtime)); 
+0

może nie masz wystarczających uprawnień, sprawdź wartość zwrotu dotyku. – luk2302

+0

Czy używasz systemu Linux na serwerze? touch() działa tylko w systemie Windows zgodnie z dokumentacją. –

+0

@ khhishek jaką dokumentację? 'touch()' nie działał pod Windowsem do php 5.3.0, a wal zawsze działa pod innym OS –

Odpowiedz

13

Korzystając clearstatcache po touch ing pliku, aby uzyskać prawidłową wartość czasu modyfikacji.

Ponieważ wcześniej korzystałeś z filemtime, wynik został zbuforowany, a przy drugim wywołaniu wynik jest pobierany z tego bufora podręcznego zamiast bezpośredniego sprawdzania pliku.

Powiązane problemy