Ticks
Tyknięcie
(
tick
)
jest
zdarzeniem
,
które
następuje
po
każdych
N
niskopoziomowych
instrukcjach
wykonywanych
przez
parser
wewnątrz
bloku
declare
.
Wartość
parametru
N
jest
określana
przez
umieszczenie
wyrażenia
ticks=
N
wewnątrz
argumentu
dyrektywa
danego
bloku
declare
.
Zdarzenie
wywoływane
na
każde
tyknięcie
określa
się
przez
użycie
funkcji
register_tick_function(
)
.
Więcej
szczegółów
znajduje
się
w
poniższym
przykładzie
.
Proszę
pamiętać
,
że
z
każdym
tyknięciem
może
być
wywoływane
więcej
niż
jedno
zdarzenie
.
Przykład
12-1
.
Profilowanie
sekcji
kodu
PHP
?php
/
/
funkcja
,
która
zapisuje
czas
jej
wywołania
function
profile
(
$wyrzuć
=
FALSE
)
{
static
$profile
;
/
/
zwróć
tablicę
czasów
wywołania
i
wykasuj
jej
lokalną
kopię
if
($wyrzuć
)
{
$temp
=
$profile
;
unset
($profile)
;
return
($temp)
;
}
$profile[
]
=
microtime
()
;
}
/
/
ustal
wskaźnik
tyknięcia
register_tick_function("profile")
;
/
/
zainicjowanie
funkcji
przed
blokiem
declare
profile
()
;
/
/
wykonaj
poniższy
kod
,
generując
tyknięcie
co
2
instrukcje
declare
(ticks=2
)
{
for
($x
=
1
;
$x
50
;
++$x
)
{
echo
similar_text
(md5($x)
,
md5($x*$x))
,
"
br
/
"
;
}
}
/
/
Wyświetl
dane
przechowywane
w
profilerze
print_r
(profile
(TRUE))
;
?
|
|
Powyższy przykład profiluje kod PHP wewnątrz bloku "declare",
zapisując czas wywołania co drugiej niskopoziomowej instrukcji
w bloku instrukcji. Informację tę można wykorzystać do wykrycia
fragmentów kodu wykonywanych w zbyt wolnym tempie. Problem
wyszukania takich fragmentów można zrealizować na wiele
sposobów, przy czym użycie tyknięć jest najwygodniesze i
najłatwiejsze do zaimplementowania.
Tyknięcia
są
doskonale
przystosowane
dla
potrzeb
debugowania
,
implementacji
prostej
wielozadaniowości
,
wykonywania
operacji
We
/
Wy
w
tle
i
wielu
innych
zadań
.
Patrz
także
register_tick_function(
)
i
unregister_tick_function(
)
.