2011-01-19 4 views
4

J'écris un script, qui est basé sur l'heure actuelle et ça marche bien, mais je ne veux pas attendre, donc je peux voir, si le script fonctionne demain, dans 2, 3, 4 jours, ou une année.Comment changer l'heure locale à des fins de test?

Existe-t-il un moyen de tromper le serveur Apache (en utilisant PHP préféré) en pensant que c'est un moment différent? :-)

Et si oui, est-il facile de corriger sans conséquences ultérieures?

+1

Si votre script est local, avez-vous essayé de changer la date de votre système? – acm

+0

@Andre matos: Un bon! Si vous avez écrit cela comme une réponse, je l'aurais choisi comme le bon! Merci ^^ – Mike

+0

+1 pour m'avoir fait réaliser que je ne devrais jamais supposer que le temps() est maintenant. – Mchl

Répondre

4

Je présume à un certain niveau dans votre script que vous utilisez la fonction time pour obtenir l'heure actuelle? (Si ce n'est pas le cas, vous devriez l'être.)

Si oui, remplacez simplement l'appel par un appel à mktime, réglé à la date/heure appropriée dans le futur.

Dans le pire des cas (si vous n'utilisez pas de script PHP), vous pouvez simplement changer la date/heure actuelle du système en utilisant la commande système "date" ("man date" pour les détails) Utilisation d'Unix/Linux ou du panneau de configuration/système approprié, etc. si vous utilisez Windows/Mac OS X, etc. Cependant, je ne recommande vraiment pas de le faire à moins d'utiliser un serveur de test privé. En outre, comme je l'ai dit dans mon commentaire, avoir à changer l'horloge du système est une mauvaise solution - vous avez vraiment besoin de faire abstraction de l'heure actuelle dans le script que vous utilisez.

1

En accord avec middaparka - changer l'heure locale est très bien si vous exécutez votre script localement, mais qu'en est-il quand il fonctionne sur un serveur parce qu'il dépend d'une donnée/session/autre chose? La réponse est simplement de définir une variable en haut de votre script, appelée $ time, et de la définir sur time(), puis d'utiliser $ time tout au long de votre script au lieu de time(). Ensuite, lorsque vous souhaitez modifier l'heure à des fins de test, vous devez uniquement modifier cette ligne.

Questions connexes