рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, "рд╕рддреНрдп" рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ, рдлрд╛рдмреЗрди рдкреЛрдЯреЗрдВрд╕реАрдпрд░ рдХреЗ рдкреБрд░рд╛рдиреЗ рдкреЛрд╕реНрдЯ рдХрд╛ рдПрдХ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд┐рдВрдЯ рдмрдирд╛рдо рдЗрдХреЛ рдкрд░, рдЬреЛ рдХрд┐ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдзреНрдпрдпрдиреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕рдореЗрдВ рдЖрдкрдХреЛ рд▓рд╛рдЦреЛрдВ рдмрд╛рд░ рдЗрдХреЛ рдФрд░ рдкреНрд░рд┐рдВрдЯ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреАред
рдЕрд╕реНрд╡реАрдХрд░рдг: рдПрдХ рдЕрдиреБрд╡рд╛рдж рд╢рд╛рдмреНрджрд┐рдХ рдпрд╛ рд╕рд╛рд╣рд┐рддреНрдпрд┐рдХ рдирд╣реАрдВ рд╣реИредрдкреНрд░рд┐рдВрдЯ рдмрдирд╛рдо рдЗрдХреЛ, рдХреМрди рд╕рд╛ рддреЗрдЬ рд╣реИ?
рд╣рдо рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреА рддрд░рд╣, рдореИрдВ рд╡реНрдпрд░реНрде рдХреА рд╕реВрдХреНрд╖реНрдо рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдкрдврд╝рдиреЗ рд╕реЗ рдердХ рдЧрдпрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдХрд┐ рдЗрдХреЛ рдХреЗ рд╕рд╛рде рдкреНрд░рд┐рдВрдЯ рдмрджрд▓рдирд╛, ++ $ I рдХреЗ рд╕рд╛рде $ i ++, рдпрд╛ рд╕рд┐рдВрдЧрд▓ рдХреЛрдЯреНрд╕ рдХреЗ рд╕рд╛рде рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдгред рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ 99.999999% рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ 99.99% рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЖрдкрдХреА рдУрд░ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдУрдкрдХреЛрдб рдкреНрд░рдХрд╛рд░ рдХреА рдПрдкреАрд╕реА рдХрд╛ рдХреИрд╢ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд╛рдкрддрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдпрд╛ 1000 SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдореБрдЦреНрдп рдкрд░ рдмрдирд╛рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдмрд╣рд╛рдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЦреЛрдВ рдмрд╛рд░ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдЙрдкрдХрд░рдг рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ php рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдорд┐рд▓рд┐рдП -
рд╡реАрдПрд▓рдбреА - тАЬрд╡рд▓реНрдХрди рд▓реЙрдЬрд┐рдХ рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░тАЭ рд╕реЗред рд╡реАрдПрд▓рдбреА рдХреЛ
рдбреЗрд░рд┐рдХ рд░реАрдердВрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░, рдЬрдм рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЛ рдкрдврд╝рддреЗ рд╣реБрдП рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, "рд╡реАрдПрд▓рдбреА рдЬрд╝реЗрдВрдб рдЗрдВрдЬрди рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рднреА рдСрдкрдХреЛрдб рдХреЛ рдбрдВрдк рдХрд░рддрд╛ рд╣реИред"
VLD рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рддреБрдЪреНрдЫ рд╣реИ - рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп php рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рддрд░рд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
phpize $ ./configure $ sudo make install
Php.ini рдореЗрдВ рдкреНрд▓рдЧ рдПрдХреНрд╕рдЯреЗрдВрд╢рди
extension=vld.so
(рдареАрдХ рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ /etc/php/apache2/conf.d/vld.ini рдореЗрдВ - рдЖрдк рдмреЗрд╣рддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ OS рд▓рдЧрднрдЧ рдкреНрд░рддрд┐ рдореЗрдВ рдРрд╕рд╛ рдХрд╣рд╛рдВ рдХрд░рдирд╛ рд╣реИред)рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордпред рджреЛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдБ: рдПрдХ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ рдХреЗ рд╕рд╛рде рдФрд░ рджреВрд╕рд░реА рдкреНрд░рд┐рдВрдЯ рдХреЗ рд╕рд╛рде
рдЗрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ -d vld.activate = 1 рдХреЗ рд╕рд╛рде VLD рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдПрдВ рдФрд░ рдЖрдЗрдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдУрдкрдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВред
$ php -d vld.active=1 print.php
number of ops: 4 compiled vars: none line
-
$ php -d vld.active=1 echo.php
number of ops: 3 compiled vars: none line
рдПрдХ рдЕрдВрддрд░ рдорд┐рд▓рд╛? - рд╣рд╛рдБ, рдкреНрд░рд┐рдВрдЯ рдПрдХ рдФрд░ opcode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреБрдЫ рджреЗрддрд╛ рд╣реИред рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ рдкреНрд░рд┐рдВрдЯ рд╕реЗ рддреЗрдЬ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ opcode рд▓рд╛рдЧрдд рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд╕рдЪ рддреЛ рдпрд╣ рд╣реИред рднрд▓реЗ рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рдкреНрд░рд┐рдВрдЯ рдХреЙрд▓ рд╣реЛрдВ (рд╕реВрддреНрд░ X = E-1 рд▓рдЧрднрдЧ рдпрд╛рдж рд░рдЦреЗрдВред рдкреНрд░рддрд┐ред)
рд╡реИрд╕реЗ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдкреНрд░рд┐рдВрдЯ рд╣рдореЗрд╢рд╛ 1 рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ, рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдЬрдм рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдорд╛рд╡реЗрд╢реЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдУрдкрдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд░рд╛рд╢рд┐ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ:
$ php -d vld.active=1 print.php 2> output $ grep "number of ops" output | cut -f 5 -d ' ' | (tr '\n' +; echo 0) | bc
рдореИрдВрдиреЗ рдирдВрдЧреЗ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдкрд░ рдХреЛрд╢рд┐рд╢ рдХреАред рдореЗрд░реЗ рд▓реИрдкрдЯреЙрдк рдкрд░, рд╕реНрдХреНрд░рд┐рдкреНрдЯ "рдмрд╕ рддреНрд░реБрдЯрд┐" рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдЖрдиреЗ рддрдХ рд▓рдЯрдХрд╛ рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ opcodes рдХреА рд╕рдВрдЦреНрдпрд╛ 2.3 рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдпрд╣ рд╕рдм рдХрд╣рддреЗ рд╣реИрдВред