Citat:
Originalno napisao BluesRocker
Ja sam iz radoznalosti probao da testiram i čini mi se da je potpuno isto koristio time() ili $_SERVER['REQUEST_TIME'].
PHP kôd:
echo $_SERVER['REQUEST_TIME'].'<br />'; usleep(300); echo time().'<br />'; usleep(300); echo time().'<br />';
Rezultat:
Kôd:
1257281771
1257281771
1257281771
|
Pa nije to dobar test

Ne znam šta si hteo da pokažeš tim testom koji kasni 600 mikrosekundi
Evo da vidiš koja je razlika kada koristiš sleep:
PHP kôd:
<pre>
<?php
echo 'REQUEST_TIME = '. $_SERVER['REQUEST_TIME'].'<br />';
echo 'time() = '.time().'<br />';
echo 'sleep 1 second<br />';
sleep (1);
echo 'REQUEST_TIME = '. $_SERVER['REQUEST_TIME'].'<br />';
echo 'time() = '.time().'<br />';
echo 'sleep 1 second<br />';
sleep (1);
echo 'REQUEST_TIME = '. $_SERVER['REQUEST_TIME'].'<br />';
echo 'time() = '.time().'<br />';
?>
</pre>
A rezultat izgleda ovako:
Kôd:
REQUEST_TIME = 1257296702
time() = 1257296702
sleep 1 second
REQUEST_TIME = 1257296702
time() = 1257296703
sleep 1 second
REQUEST_TIME = 1257296702
time() = 1257296704
Očigledno je da je za svaki sleep vrednost $_SERVER['REQUEST_TIME'] konstantna dok se iz funkcije time() vraća različito.
I da pretopostavim da imaš recimo neki order processing i da se tvoj script izvršava 3-4 sekunde (konekcija na payment processor, slanje, process, response, parse... ) i ti treba da zabeležiš recimo timestam kada je izvršena kupovina, ove 2 vrednosti se razlikuju za tih 3-4 sekunde.
E sad, ti ćeš reći da je to cinculiranje, možda i jeste u najvećem broju slučajeva ali recimo 2checkout kada šalje notification gradi security key baš preko timestampa, order id... i od toga radi md5.
Često ljudi prave hash-ove od timestamp-a, pa recimo šalješ activation link, na primer sačuvaš u bazu:
INSERT ... SET hash= md5(time())
i recimo upiše se md5(1257296702), pa onda pripremiš mail i pošalješ activation link:
activation?hash=md5(time())
pa ako je bila samo mala razlika (teoretski dovoljno i jedna mikrosekunda) između ova 2 timestampa koja si sačuvao u bazu i poslao na mail - poslaćeš mu pogrešan link: md5(1257296703) i neće uspeti da aktivira account.
E sad, ti vaši predlozi da se koristi global, ili da se definiše konstanta na početku scripta (a već imaš jednu konstantu $_SERVER['REQUEST_TIME']) su ... ono... 1000 ljudi - 1000 ćudi

Ti kažeš "ma nema veze, u 99% slučajeva će sve biti ok", sorry ali to nije razmišljanje progamera
Opet, ne govorim ni o uštedi u brzini, verovatno je i brzina ista, sve zavisi i od toga šta radite. Ako pišete samo timestmap komentara na blogu onda je verovatno savršeno sve jedno da li je razlika 1, 2 ili 100 sekundi.