Koristiti $_SERVER['REQUEST_TIME'] vs time()?
Citat:
|
ne znam... nekako mi je lakse da na pocetak skripte turim
$time=time(); i to koristim do kraja... lakse se pise od $_SERVER['..... :D ne vidim sto bi se uzimala sekunda od requesta... to je uglavnom ista sekunda..... i kome je bitno da li je sekunda od requesta ili od izvrsavanja skripte? mada, ono jes, $_SERVER je globalna promenljiva pa ne moras navoditi global $time; ... al meni nekako cak i sa global $time; ispada laksa varijanta, manje se kuca :D |
FTR: Ne slažem se
|
ja radim ko Peca, iako znam za REQUEST_TIME, navika od ranije, ne toliko zbog kucanja
kad razmislim, ima smisla da to stoji u _REQUEST, pa cu evo odsad da pisem to :D |
btw, ja jos vrtim php4 na serveru gde je mycity... i ne planiram da stavljam noviji [jer nemam potrebu].
tako da.... ne mogu koristim ovo :) |
Probao sam taj $_SERVER['REQUEST_TIME'] cisto da vidim o cemu se radi.
U fazonu, neke razlike i nema. Request time je ionako vreme kada je server uhvatio zahtev,a ne kada ga je neko poslao... Ne znam da li moze biti praktivno kada se meri vreme izvrsenja neke skripte,sumarno - dakle uzimamo i vreme koje je apache upotrebio za procesiranje.... |
Citat:
Ja baš mislim da je važno da u jednom izvršenju scripta uvek bude identičan timestamp od početka do kraja. agvozden priča o "merenju izvršenja scripta", ja ne pričam o tome, niti to merim na live serverima. Ja razmišljam o upisu timestamp u bazu. |
Radi se o dve razlicite stvari, ovaj $_SERVER['REQUEST_TIME'] daje unix timestamp http requesta, dok time() daje unix timestamp u trenutku poziva time f-je u skriptu sto u zavisnosti od kontesta (gde je time f-ja pozvana) naravno nije isto.
Ne mora biti isto cak ni ako se zove u prvoj liniji fajla jer kontam da u zavisnosti od setovanja servera moze proci izvestan broj mikro/mili sekundi izmedju ta dva, sto opet u odredjenim slucajevima moze dovesti do razlike od jedne sekunde cak i u slucaju da time stavite kao prvu liniju u skriptu. Ovo je naravno teorija, u praksi da bi se ovo proverilo morali bi da imamo i mikrotime requesta :) |
Naravno da nije ist, u najvećem broju slučaja potreban i dovoljan je timestamp requesta, a ne timestamp svake milisekunde kada se zatraži u trenutku izvršenja scripta. To naravno ne važi kada se meri vreme izvršenja scripta nego za one najčešće zadatke kada čuvaš timestmap u bazi.
Teoretski je takođe efikasnije pristupanje 10 puta jednoj varijabli nego 10 puta generisati varijablju, samo je pitanje da li je iole značajna ušteda :) Ja sam malo "optimization freak" i kod mene je svaka milisekunda bitna :) |
Pa ne moras da je generises 10 puta :)
$startup_time = time(); voila ;) |
blah, ... odustajem
|
Citat:
ili jos bolje - ako hocete globalnu konstantu: define ('CURRENT_TIME', time()); ;) ne vidim sto bi bilo bitno da li uzimamo unixtime http requesta ili unixtime u trenutku pocetka izvrsavanja skripte... jednostavno, programeru je sve jedno... ne vidim kome/gde bi bilo to bitno... a i u 99% slucaja ce to biti ista sekunda... [mali-offtopic] Citat:
osnovni kod je takav, pa sam i ja godinama doradjivao to isto tako proceduralno... cak mi i uslo u naviku da tako radim [sto znam da NIJE dobro, OOP ne postoji dzaba, al jbg, navika]. a stvarno me mrzi da stavljam php5 i jurim da ispravljam kod... jednostavno ne zelim da menjam nesto sto dobro, stabilno i dovoljno brzo radi... imam preca posla fala Bogu... a nikom ne smeta sto je php4... sto da pravim sebi posao... [mada sam isprobao forum na php5 na localhostu - sve je glatko radilo... al nisam hteo da ulazim u avanturu.] [/mali-offtopic] Citat:
$startup_time = time(); ili define ('CURRENT_TIME', time()); resava sve... cak i bude kompatibilno sa php4/5.0 :D |
Ja sam iz radoznalosti probao da testiram i čini mi se da je potpuno isto koristio time() ili $_SERVER['REQUEST_TIME'].
PHP kôd:
Kôd:
1257281771 |
Evo ja sam pre par dana nasledio jedan PHP 3 projekat (ne nije PHP3 ali pisan je kao da jeste bez linije OOP-a) i radi odlicno na PHP 5.3, jedino sto mora da se stavi ovo:
php_value error_reporting 22519 u .htaccess (ekvivalent error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED)) |
Citat:
|
Citat:
Evo da vidiš koja je razlika kada koristiš sleep: PHP kôd:
Kôd:
REQUEST_TIME = 1257296702 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. |
Ljudi ajd raspravljamo o necem pametnijem ... izasao namespace u php 5.3 a mi mlatimo da li je konstantna vrednost konstanta, da li ako prodje 300 mikrosekundi moze proci u sledecu celu sekundu ...
Bah. Over and out. |
ja mislim da se bluz previse uzbudjuje :)
Mislim "problem" je jasan ko dan, i ko ramislja po princiup: "u 99% slucajeva ... " taj je jeban ako radi ko programer :) @dinke Vidjecemo, mlado je to jos :) Ja sam trenutno zaglibio u projekte sumnjam da cu to skoro poceti koristiti, al bice zanimljivo vidjet jel radi to kako treba :) |
Citat:
|
mislim da je dinke samo hteo da kaze da ovde nema puno filozofije da bi se dalje polemisalo, a nek svako koristi ono sto mu deluje lakse... ionako nema razlike :)
mislim, isto je da li uzmes $startup_time odmah iza <? ili je citas iz $_SERVER - isto sa programerskog aspekta. naravno da smo svesni da stalno pozivanje time() funkcije nije pametno. recimo moja skripta [koju pokrece cron] na vesti.rs se izvrsava po 20 min... naravno da imam $startup_time, cak i $startup_hour :) e da... vidis, ako pises skriptu koja se izvrsava kao program [koju pokrece cron], mozda $_SERVER['REQUEST_TIME'] nece ni biti definisana [treba proveriti?]. shvatas i sam da u tom slucaju gubis kompatibilnost ne samo sa php4/5.0 vec i sa izvrsavanjem skripti u konzoli. a opet, kao programeru - tebi je u interesu da napises kod koji ce da radi pod svim okolnostima... odakle znas da li ce za godinu dana projekat dobiti neki modul koji ce da se izvrsava kroz cron... i recimo taj modul koristi funkcije/klase u kojima si ti koristio $_SERVER['REQUEST_TIME'] ... |
Citat:
BTW, ako cemo bas da teramo mak na konac, bas kod payment gateway-a bi bilo bolje da se koristi time() koji se generise neposredno pre trenutka slanja zahteva, da bi se tvoj timestamp i vreme koje gateway ima u svom log-u sto vise poklopili, moze da olaksa zivot posle. A ja inace nisam znao ni da postoji ta superglobalna, vec po navici koristim time(), ali eto korisno je znati, mozda zatreba nekad za nesto. |
Citat:
@ivanhoe: ono je bio samo primer situacije gde može da nastane problem, nisam mogao da se setim očiglednijeg primera. |
Citat:
Secam se razgovora sa svojim tadasnjim sefom od pre par godina, nesto tipa: Citat:
|
Citat:
p.s. naravno da ne pokrecem stvar kroz wget/apache, mislim da bi php ubio skriptu posle 60sec jer je konfigurisan tako... sto je i normalno. |
Citat:
EDIT: moja greska, upravo proverio i postoji i pod CGI-jem, bar na mom hostingu... |
Lupate gluposti. Gledam i cudim se koliko developera raspravlja o ovome.
Pa ako se upisuje nesto u bazu.. zar nije relevantno da se uzme unix_timestamp() iz mysql-a ovo sto radite.. kad tad ce vam doci glave.. uglavnom na projektima 50.000+ |
^Hvala, konacno da neko dodje da nama neznalicama otvori oci :)
|
Nema problema.. ako te jos nesto interesuje slobodno pitaj
|
^ keep us in light :D
|
^ .. ne razumem ti ja taj engleski, seljacina sta ces.
|
Vreme je GMT +2. Trenutno vreme je 09:00. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.