2013-05-16 2 views
0

J'ai un certain code PHP4 dans lequel j'ai besoin de restaurer l'heure du système après l'exécution du code. Je cherche une simple déclaration avec laquelle je peux stocker la date/heure, et restaurer ensuite:Comment faire pour restaurer l'heure du système local avec PHP4

$oTime = function1(); 
... 
do something else 
... 
function2($oTime); 

En PHP5, vous pouvez utiliser assez simple date_timestamp_get() et date_timestamp_set(), mais comment y parvenir le plus simple si vous dois-je utiliser PHP4?

P.S. Pas de questions sur pourquoi j'utilise PHP4. Je ne l'aime pas non plus ...

+1

Pourquoi avez-vous besoin de modifier l'heure du système? Il pourrait être plus facile (et plus sûr) de répondre à cela? (après tout, si une requête ramène le temps système, d'une heure, puis une autre intervient et le ramène une autre heure, alors la première complète et restaure l'heure, la seconde n'aura pas le temps qu'elle attendait, et restaurerait au temps de travail de la première) –

+0

Il s'agit d'un test pour une fonctionnalité de mise à l'heure. Je change l'heure à une valeur constante, la vérifie, et règle le temps (avec la petite subtile de laisser le temps pour le test lui-même). – Alex

+0

Avez-vous installé NTP (Network Time Protocol)? Vous pouvez l'utiliser pour synchroniser l'heure du serveur à l'heure exacte http://en.wikipedia.org/wiki/Network_Time_Protocol (c'est généralement fait au démarrage, mais vous pouvez l'actionner vous-même - synchroniser, changer l'heure, exécuter le script, synchroniser) - La ligne de commande linux sera 'nptdate xxntppoolxx' et' date xxx' – Waygood

Répondre

0

En supposant qu'un système Linux est utilisé, on peut utiliser la fonction date pour régler la date directement. On a alors

$aDate = getdate(); 
... 
do something else 
... 
exec("/bin/date ".sprintf("%02d",$aDate["mon"]).sprintf("%02d",$aDate["mday"]). 
     sprintf("%02d",$aDate["hours"]).sprintf("%02d",$aDate["minutes"]).sprintf("%04d",$aDate["year"]). 
     ".".sprintf("%02d",$aDate["seconds"])); 

Si la date est modifiée entre les deux, cela n'a pas d'importance car il sera remis à l'heure avant que les étapes intermédiaires.

Remarques:

  • L'inter entre le traitement ne devrait pas prendre trop de temps, car le temps sera mauvais après. Si le traitement est inférieur à une seconde, cela devrait être bon
  • Bien que l'utilisation de exec pose un risque de sécurité, l'utilisation ci-dessus est sûre SI ET SEULEMENT SI la variable $aDate n'est pas falsifiée entre les deux.
Questions connexes