Avatar billede default Nybegynder
08. juli 2007 - 23:11 Der er 22 kommentarer og
1 løsning

time funktion ustabil?

Hejsa
Jeg er igang med et community, hvor jeg har et timesystem indbygget. Men det timesystem er alt for udstabilt. nogle gange tilføjer den 200000 sekunder til brugerens tid, selvom personen kun har været på 3 sekunder sekunder feks. Nogle gange trækker den også fra.
Jeg har prøvet at lave en test på time(); funktionen, den springer meget. nogle gange kan den feks stå på 1183927160, også hvis jeg opdatere, så kunne den godt finde på at stå 1183927145 pludselig?

Hvad kan der være galt?

Her er min kildekode.


$time = time();
if(isset($_SESSION[tid])) {
$tid = $time - $_SESSION['tid'];
mysql_query("UPDATE community SET onlinetid=onlinetid+$tid WHERE navn = '$_SESSION[navn]'");
mysql_query("UPDATE community SET online='$time' WHERE navn = '$_SESSION[navn]'");
$_SESSION['tid'] = $time;
}
else {
$_SESSION['tid'] = $time;
mysql_query("UPDATE community SET online='$time' WHERE navn = '$_SESSION[navn]'");
}
Avatar billede jakobdo Ekspert
09. juli 2007 - 08:27 #1
Kan det ske du har globals on?
Og derfor bliver $_SESSION['tid'] sat i dette kald: $tid = $time - $_SESSION['tid'];

Prøv at ret $_SESSIOn['tid'] til: $_SESSION['s_tid'] i dit tidsscript, og se om det hjælper.
Avatar billede default Nybegynder
09. juli 2007 - 10:14 #2
Jeg har globals på ja. men kan godt slå det fra, hjælper det?
Avatar billede default Nybegynder
09. juli 2007 - 10:22 #3
Har rettet det med $_SESSION['tid']. Altså tid til s_tid. $tid bliver stadig negativ tal stadig. altså -3 feks nogle gange
Avatar billede jakobdo Ekspert
09. juli 2007 - 10:53 #4
Hvad hvis du laver en test som:

<?php
echo time();
?>

Hopper den tid så op og ned?
Avatar billede default Nybegynder
09. juli 2007 - 16:41 #5
http://www.geekabit.dk/timetest.php

Som du ser, nej!

Så må det være mit timesystem som er forkert sat op! Sådan som det ser ud nu:
$time = time();
if(isset($_SESSION['s_tid'])) {
$tid = $time - $_SESSION['s_tid'];
mysql_query("UPDATE community SET onlinetid=onlinetid+$tid WHERE navn = '$_SESSION[navn]'");
mysql_query("UPDATE community SET online='$time' WHERE navn = '$_SESSION[navn]'");
$_SESSION['s_tid'] = $time;
}
else {
$_SESSION['s_tid'] = $time;
mysql_query("UPDATE community SET online='$time' WHERE navn = '$_SESSION[navn]'");
}
Avatar billede jakobdo Ekspert
09. juli 2007 - 18:50 #6
Hvis den kode kun printer: echo time();
Så er der noget galt på serveren...

Hurtig F5 giver:

1183999735
1183999737
1183999740
1183999739
1183999741

osv...

Med mindre du har rettet din kode, så du laver noget beregning på det.
118399973
Avatar billede default Nybegynder
09. juli 2007 - 18:59 #7
Prøver at kontakte min host, smed bare den kode ind du gav mig
Avatar billede jakobdo Ekspert
09. juli 2007 - 19:33 #8
Prøv at lav koden:

<?php
for($i=0; $<1000; $i++)
{
echo time();
}
?>

Og smid et link, måske vi kan se tiden direkte hoppe.
Avatar billede default Nybegynder
09. juli 2007 - 19:51 #9
http://geekabit.dk/timetest.php har sat løkken til 5000, kan ikke se at den falder ved mig
Avatar billede jakobdo Ekspert
09. juli 2007 - 20:18 #10
Måske en bedre løsning vil være:

<?php
for($i=0; $<10; $i++)
{
echo time();
sleep(1);
}
?>

Scriptet vil tage ca 10 sekunder at eksekvere.
Avatar billede default Nybegynder
09. juli 2007 - 20:51 #11
http://geekabit.dk/timetest.php ved mig springer den ikke tilbage.
Avatar billede jakobdo Ekspert
09. juli 2007 - 21:05 #12
Prøv at lav koden:
<?php
echo time();
?>

Igen.
Så skal jeg lave noget som som åbner den side et par gange i træk, og så kan du se den hopper.
Avatar billede jakobdo Ekspert
09. juli 2007 - 21:06 #13
PS: Din kode fra 20:51:59 hopper heller ikke hos mig.
Avatar billede default Nybegynder
09. juli 2007 - 21:39 #14
Så er den sat til
<?
echo time();
?>
Avatar billede jakobdo Ekspert
09. juli 2007 - 22:04 #15
Se scriptet her: http://www.codebreaker.dk/exp/786777exp.php
Den er helt gal med din server.
Måske det er en server i et cluster, og den derfor hopper mellem flere servere?
Avatar billede default Nybegynder
09. juli 2007 - 22:14 #16
Ja kan jeg godt se, den er helt galt. De der skide idioter fra servage (servage.net) fatter bare intet, ved ikke hvordan jeg skal vise dem, at der er noget ivejen. De bliver ved med at køre at der intet er ivejen.

De kan sikkert ikke forstå mit engelsk.!
Avatar billede jakobdo Ekspert
09. juli 2007 - 22:19 #17
Skal jeg rette teksten på min script, så kan du smide et link til dem på det?
Avatar billede default Nybegynder
09. juli 2007 - 22:25 #18
Ja, bare skriv Time at geekabit ved min server tid.
:P
Og tak for hjælpen, det sku meget du gør for mig heh. Vil smutte nu her, sender linket ind i morgen inden jeg skal på job!
Avatar billede default Nybegynder
09. juli 2007 - 22:29 #19
http://geekabit.dk/testtest.php

lavede lige en test, synes ikke der er tilbage fald når det ikke går hurtigere end hver sec.
Avatar billede jakobdo Ekspert
10. juli 2007 - 08:06 #20
Så er scriptet klar... http://www.codebreaker.dk/exp/786777exp.php
+ jeg har tilføjet lidt ekstra tekst. :o)
Avatar billede default Nybegynder
24. august 2009 - 20:52 #21
Afgiv svar tak.. skal lukke alle mine tråde!
Avatar billede jakobdo Ekspert
24. august 2009 - 21:07 #22
Svar!
Avatar billede jakobdo Ekspert
24. august 2009 - 21:16 #23
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester