Temps de generations d'une page, OK mais... bug !! - PHP - Programmation
Marsh Posté le 05-11-2002 à 15:01:35
tu devrais afficher $TmpDeb et $TmpFin pour comprendre ce qui se passe
Marsh Posté le 05-11-2002 à 15:04:07
regarde dans le manuel en ligne, dans les commentaires y a un code pour faire ce que tu veux, mais le format de microtime ne te permets pas de faire une soustraction comme ca si je me rapelle bien, désolé
Marsh Posté le 05-11-2002 à 15:07:55
zion a écrit a écrit : regarde dans le manuel en ligne, dans les commentaires y a un code pour faire ce que tu veux, mais le format de microtime ne te permets pas de faire une soustraction comme ca si je me rapelle bien, désolé |
Ok mais l'erreur devrait se produire dans 100% des cas alors!!! comprends po...
charlene>> t'as raison , je vais afficher les valeurs de Debut et fin pour voir...
Marsh Posté le 05-11-2002 à 15:14:13
BOoooooooon
voila j'ai choppé la valeur de debut et de fin quand le bug se produit, et logiquement il est normal que ca ai une valeur negative: regardez :
Page générée en -961.7 milli-secondes
Debut : 0.99831700 1036505550
Fin : 0.03660200 1036505551
donc selon lui parfois, il fini la page avant de l'avoir commencé
La je capte po... vraiment po...
Marsh Posté le 05-11-2002 à 15:23:13
schtroumpheur a écrit a écrit : Ok mais l'erreur devrait se produire dans 100% des cas alors!!! comprends po... charlene>> t'as raison , je vais afficher les valeurs de Debut et fin pour voir... |
nan, nan,
certaines opérations ou fonctions peuvent renvoyer une valeur indéterminée quand elles ne sont pas utilisées exactement comme elles devraient l'être.
Le fait que ça soit indéterminé, fait que des fois les valeurs crachées seront dans l'intervalle de contrainte de fonctionnement de ton programme. Pas de plantage voir des affichages de résultats plus ou moins cohérent, mais pas forcément juste.
Un programme qui bogue n'est pas forcément un programme qui plante, c'est des programmes farceurs. Tu crois que tu l'as débogué et un jour ... paf le prog farceur frappe. Toujours très drole d'ailleurs
Marsh Posté le 05-11-2002 à 15:25:21
barbarella a écrit a écrit : nan, nan, certaines opérations ou fonctions peuvent renvoyer une valeur indéterminée quand elles ne sont pas utilisées exactement comme elles devraient l'être. Le fait que ça soit indéterminé, fait que des fois les valeurs crachées seront dans l'intervalle de contrainte de fonctionnement de ton programme. Pas de plantage voir des affichages de résultats plus ou moins cohérent, mais pas forcément juste. Un programme qui bogue n'est pas forcément un programme qui plante, c'est des programmes farceurs. Tu crois que tu l'as débogué et un jour ... paf le prog farceur frappe. Toujours très drole d'ailleurs |
Oué ca c'est sur,...
mais microtime() te renvois quoi exactement?
Car je sais plus trop avec tout ca...
Marsh Posté le 05-11-2002 à 15:26:25
sur php.net :
My microtime function doesn't seem to know which way is up. I include a file in every script. The first line of code in the include file is
$begin_time = microtime();
A function within the include file is the LAST thing called during script execution. it says:
global $begin_time;
$total time = microtime() - $begin_time;
Now the outcome is (very strange) sometimes negative, sometimes positive. Always around 0.2 through -0.2.
Marsh Posté le 05-11-2002 à 15:27:35
Simple function to return the absolute difference between two microtime strings.
function microtime_diff($a,$b) {
list($a_micro, $a_int)=explode(' ',$a);
list($b_micro, $b_int)=explode(' ',$b);
if ($a_int>$b_int) {
return ($a_int-$b_int)+($a_micro-$b_micro);
} elseif ($a_int==$b_int) {
if ($a_micro>$b_micro) {
return ($a_int-$b_int)+($a_micro-$b_micro);
} elseif ($a_micro<$b_micro) {
return ($b_int-$a_int)+($b_micro-$a_micro);
} else {
return 0;
}
} else { // $a_int<$b_int
return ($b_int-$a_int)+($b_micro-$a_micro);
}
}
comprends pas trop pq il faut faire tout ca
Marsh Posté le 05-11-2002 à 15:30:13
ben,
en php je ne sais pas, mais en C tu peux utiliser
ftime(&temps1);
....
ftime(&temps2);
vax = diftem(temps1,temps2);
désolé, il te faut un utilisateur PHP pour plus d'info
Marsh Posté le 05-11-2002 à 15:36:40
barbarella a écrit a écrit : ben, en php je ne sais pas, mais en C tu peux utiliser ftime(&temps1); .... ftime(&temps2); vax = diftem(temps1,temps2); désolé, il te faut un utilisateur PHP pour plus d'info |
OK merci quand meme,
Marsh Posté le 05-11-2002 à 15:56:09
T'as essayé avec mktime() à la place de microtime() ?
Marsh Posté le 05-11-2002 à 15:56:35
C'est écrit texto:
Returns the string "msec sec"
donc ton calcul c'est n'importe quoi, tu dois séparer les valeurs et faire un joli calcul, mais la valeur à gauche c'est les msec.
Marsh Posté le 05-11-2002 à 15:59:41
Ah uiiiiiiiiii, vala, c'est ça. Fallait juste bien lire la doc, en fait
Marsh Posté le 05-11-2002 à 16:01:37
zion a écrit a écrit : C'est écrit texto: Returns the string "msec sec" donc ton calcul c'est n'importe quoi, tu dois séparer les valeurs et faire un joli calcul, mais la valeur à gauche c'est les msec. |
Ha ouéééé, mince alors, merci de me l'avoir faire remarqué
Bon ben j'ai pigé le bug alors !!! quand le nombre de seconde sont pas les meme c'est logique qu'il sorte une valeur negative alors, en effet c du portenawak mon machin !!!
Merci
Marsh Posté le 05-11-2002 à 16:02:30
J'avais dit de lire la doc
Y a même un comment avec un script tout fait
Marsh Posté le 05-11-2002 à 16:05:30
zion a écrit a écrit : J'avais dit de lire la doc Y a même un comment avec un script tout fait |
Marsh Posté le 05-11-2002 à 16:19:41
Bon ben voila j'ai fait unetite fonction toute simple
Code :
|
et ca marche tres bien merci !
Marsh Posté le 05-11-2002 à 14:52:39
Voila je fais ceci pour calculer le temps de generation d'une page :
En debut de page :
$TmpDeb=microtime();
En fin de page :
$TmpFin=microtime();
Le calcul :
$TmpGen=$TmpFin-$TmpDeb;
echo $TmpGen;
bref ca marche...
mais de temps en temps $TmpGen a une valeur negative !!!
Dans la plupart des cas je vois bien un truc du genre 29 milli seconde , etc... mais parfois il me sort -700 milliseconde , une fois sur 15 +- !!!
Qqun a une explication a ce bug?
Merci