2011-07-11 2 views
1

J'ai un problème. J'ai un fichier que je veux seulement mettre à jour quotidiennement. J'utilise donc filemtime et un horodatage d'expiration et les vérifie les uns par rapport aux autres ... le problème est que j'obtiens l'instruction echo chaque fois que je rafraîchis la page. Des idées?vérification d'expiration de fichier ne fonctionne pas

$time_expire = time() + 24*60*60; // Expire Time (1 Day) 
// Check file change time 
if(filemtime($cache_filename) <= $time_expire) { 
    echo 'file is too old - refresh it'; 
} 

Répondre

3

Il suffit de penser à travers la logique lentement:

  • horodatage d'expiration est un jour dans le futur de maintenant
  • vérifier si l'horodatage de modification est inférieure à ou égal à l'horodatage d'expiration

Oui, je pense que cela va toujours êtretrue. Sauf si votre fichier est From The Future ™.
Votre horodatage d'expiration doit être un jour .

+1

ah, bien sûr. Quel idiot! –

2

Il est parce que votre filemtime est dans le passé (au moins devrait être) et vous comparer à l'avenir (time() + 24*60*60). Bien sûr, c'est moins.

prendre un café et repenser ce que vous avez ;-) il avons écrit

Un "petit" conseil:

if (time() - filemtime($cache_filename) >= 3600 * 24)) { /* file is too old, lets refresh it */ } 
+0

Je viens de faire cela à la fin $ time_expire = time() - 24 * 60 * 60; –

1

Supposons que si votre filemtime est 1000000 et l'heure actuelle() est 1.000.060 votre time_expire = 1000060 + 86400. Ainsi, votre condition est toujours vrai

Au lieu de cela, vous devez vérifier filemtime + 86400 <= time()

Questions connexes