|
АБРАКАДАБРА (Тоже самое но в читаемом виде)
V etom nebol'6oy stat'e a xo4u rasskazat' vam, kak zase4' vrema vipolnenia va6ego koda na PHP. Mnogie nazivaut etot priem pods4etom vremeni generacii stranici (Page time generated). Mne eto nazvanie takje pri6los' po du6e, tak 4to v dal'ney6em budu upotreblat' ego 4a6e. Ne govorite mne, 4to vi ni razu ne videli primerno takoy nadpisi na saytax: Stranica sgenerirovana za 0.235467 sekund ili Page time generated in 0.235467 seconds ili
kak u mena na sayte PTG 0,0391 s. Prikol'naa
ve6', odnako. Ne o6ibus', esli vi toje xotite realizovat' eё na svoem
sayte? Xotite - togda poexali. Sna4ala ob&asnu logiku raboti takoy
fi6ki. Ona o4en' prosta: - Pered vipolneniem togo koda, kotoriy mi xotim zase4', s4itivaem teku6ee vrema.
- Posle vipolnenia koda, opat' je s4itivaem teku6ee vrema i vivodim raznicu polu4iv6ixsa vremen.
Rekomenduu
srazu 4asti skripta, otve4au6ie za pods4et vremeni v na4ale i v konce
koda, sootvetstvenno, vinesti v otdel'nie fayli i vstavlat' ix po mere
neobxodimosti. Itak, kod skripta start.php, kotoriy pods4itivaet teku6ee vrema (vstavlat' v tom meste, otkuda na4inaem pods4et, t.e. gde-to v na4ale stranici). <?
#------ fayl start.php
// s4itivaem teku6ee vrema
$start_time = microtime();
// razdelaem sekundi i millisekundi (stanovatsa zna4eniami na4al'nix klu4ey massiva-spiska)
$start_array = explode(" ",$start_time);
// eto i est' startovoe vrema
$start_time = $start_array[1] + $start_array[0];
?> Startovoe vrema pods4itali. Teper' kod fayla end.php, kotoriy takje pods4itivaet teku6ee vrema, a zatem vivodit raznost' etogo vremeni ot pods4itannogo v fayle start.php, t.e., po suti dela, i vivodit vrema generacii stranici. <?
#------ fayl end.php
// delaem to je, 4to i v start.php, tol'ko ispol'zuem drugie peremennie
$end_time = microtime();
$end_array = explode(" ",$end_time);
$end_time = $end_array[1] + $end_array[0];
// vi4itaem iz kone4nogo vremeni na4al'noe
$time = $end_time - $start_time;
// vivodim v vixodnoy potok (brouzer) vrema generacii stranici
printf("Stranica sgenerirovana za %f sekund",$time);
?> V principe, vse. Fayl start.php vstavlayte tuda, otkuda xotite na4inat' zasekat' vrema; end.php - gde zaxotite "ostanovit' va6 sekundomer". Vstavki faylov mojete osu6estvlat', k primeru, instrukciey include(); Delo
sdelano... odnako, navernaka vi xotite razobrat'sa, kak je rabotaet to,
4to mi napisali. Li4no a ne lublu uzat' 4ujie narabotki v principe. A
esli i uzau, to, obazatel'no razobrav6is' v ix rabote. Dalee ob&asnu
vam, dla 4ego slujat funkcii, kotorie mi primenali v primerax i dam
neskol'ko sovetov. Funkcii, ispol'zovav6iesa v primerax
- string microtime() - vozvra6aet stroku v formate: "mikrosekundi sekundi", v kotoroy sekundi - timestamp, vozvra6aemiy funkciey time(),
a mikrosekundi - drobnaa 4ast' sekund, sluja6aasa dla bolee to4nogo
izmerenia promejutkov vremeni. Funkcia rabotaet tol'ko v sistemax,
kotorie podderjivaut sistemniy vizov gettimeofday(), t.e. prakti4eski vo vsex.
- Zame4anie: timestamp
- format vremeni, kotoriy ravnaetsa "kol-vu sekund, pro6ed6ix s
poluno4i 1 anvara 1970 goda po Grinvi4u do nastoa6ego momenta". Etot
format dannix prinat v osax UNIX, kak standartniy. Universal'noe i
udobnoe predstavlenie, s kotorim vi e6e ne raz stolknetes'.
- array explode(string separator, string string [, int limit])
- polu4aet stroku, zadannuu v eё vtorom argumente i pitaetsa nayti v
ney podstroki, ravnie pervomu argumentu. Zatem po mestu vxojdenia etix
podstrok stroka "razrezaetsa" na 4asti, pome6aemie v massiv-spisok,
kotoriy i vozvra6aetsa. Esli zadan parametr limit, to u4itivautsa
tol'ko pervie limit-1 u4astkov "razreza". Takim obrazom, vozvra6aetsa
spisok iz ne bolee 4em limit elementov.
- Zame4anie: string implode(string glue, array pieces) (sinonim - join()) - f-i, polnost'u protivopolojnie po zna4eniu f-i explode().
Oni berut associativniy massiv (kak pravilo, eto spisok) pieces i
skleivaut ego zna4eniu v edinuu stroku pri pomo6i "stroki-klea" glue.
- void printf (string format [, mixed args]) - f-a, polnost'u analogi4naa svoey C
versii. Ona vivodit v brouzer stroku, sostavlennuu na osnove stroki
formatirovania, soderja6ey nekotorie special'nie simvoli, kotorie budut
vposledstvii zameneni na zna4enia sootvetstvuu6ix peremennix iz spiska
argumentov. Parametri:
format - strokovoy format vivoda dannix
args - argumenti dla formatirovania
A ne budu podrobno ostanavlivat'sa na etoy funkcii, tak kak eё polnoe
opisanie dostato4no ob&emnoe (nu ne tak uj 4tobi...), da i sama funkcia
o4en' mo6naa (medlitel'naa v tom 4isle). Skaju li6', 4to v na6em slu4ae
mi ispol'zuem eё dla togo, 4tobi pri vivode preobrazovat' polu4iv6eesa
"vrema generacii stranici" do 4isla s plavau6ey to4koy (x.xxxxxx). T.e.
4tobi posle to4ki soderjalos' ne bolee 6 simvolov.
- Zame4anie: mojno bilo i vospol'zovat'sa prostim vizovom funkcii tipa echo() ili print(). Odnako v etom slu4ae, vivedetsa 4islo s bol'6im koli4estvom cifr posle plavau6ey to4ki!
Soveti (a to4nee sovet=)
- Primeri
mojno ispol'zovat' dla zasekania vipolnenia lubogo skriptovogo
fragmenta. T.e., sovsem neobazatel'no to, 4to na sayte zasekaetsa
polnost'u generacia dinami4noy stranici. Nekotorie muxluut, zasekaa
voob6e ne ponatno 4to; poetomu ne prixodit'sa udivlat'sa, 4to sayt,
gruza6iysa so skorost'u tarakana, sgenerirovan za udivitel'no maloe
vrema. V principe, vrema generacii i vrema vivoda stranici - sovsem
raznie ve6i.
Vot, pojaluy i vse, 4to a xotel vam rasskazat' otnositel'no etoy temi.
|