рдЬрдм рдПрдХ рд╕рдкрдиреЗ рдореЗрдВ рд╡рд╣ рд╕рдкрдиреЗ рджреЗрдЦрддрд╛ рд╣реИ, "рдУрд╣, рдФрд░ рдЕрдЧрд░ рд╕рд░реНрд╡рд░ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ ..."
рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╢реБрдн рд░рд╛рддреНрд░рд┐ред рдореИрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдЬреИрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ (рдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрд░реНрдз-рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред рдореИрдВ рдПрдХ рднрдпрд╛рдирдХ рд╡реНрдпрдХреНрддрд┐ рд╣реВрдБ, рдпрд╣ рдЕрдЪрд╛рдирдХ рдореЗрд░реЗ рд╕рд╛рде рд╣реБрдЖ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рдХреЛ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ;)ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрдм PHP (> 100,000 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдХреЛрдб) рдореЗрдВ рдХрд╛рдлреА рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ "рд╕рд╣реА" рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдЬреЛ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдХреА рдЧрдИ рдереА, рд╡рд╣ рд╕рдм рдХреБрдЫ рдЕрд░рд╛рдЬрдХрддрд╛ рдореЗрдВ рдбреБрдмрд╛рдиреЗ рдХреА рдзрдордХреА рджреЗрддреА рд╣реИред рдХрдо рд╕реЗ рдХрдо рдирдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рдкреНрддрд╛рд╣, рдорд╣реАрдиреЗ, рд╕рд╛рд▓ рдореЗрдВ рдХрдВрдкрдиреА рдореЗрдВ рдЖ рд╕рдХрддреЗ рд╣реИрдВ ... рд╕рдорд╛рдзрд╛рди рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╕реНрдерд┐рддрдХрд░рдг рдФрд░ рд╕рдЦреНрдд рд╡рд╛рд╕реНрддреБ рдирд┐рдпрдореЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рд╣реИред рдЦреБрдж рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ - рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛, рдореИрдВ рдХреЗрд╡рд▓ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рд╕рд╛рдЗрдЯреЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдЖрдЧреЗ рдХреА рд╣рд▓рдЪрд▓ рдХреЗ рдмрд┐рдирд╛, рдЬрдм рдореИрдВрдиреЗ рдЙрди
рдЪреМрдЦрдЯреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдкрдврд╝рд╛, рдкрдврд╝рд╛, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ ZendFramework рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рд╕рдорд╛рди рд░реВрдк рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рддрд╛рдХрддрд╡рд░ рд╡рд╣, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рдореЗрдВ рдЦреБрдж рдХреЗ рд▓рд┐рдП рднрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдПред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдореЗрдВ, рд╕рднреА рд╕рдВрднрд╡ рдкреНрд▓рд╕рд╕ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде, рдПрдХ рд╕рд╡рд╛рд▓ рдФрд░ рдПрдХ рджреАрд╡рд╛рд░ рдЕрдЪрд╛рдирдХ рдЙрдарддреА рд╣реИ: рдЕрдм рдореЗрд░рд╛ рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛ рд▓рдЧрднрдЧ 1-2% рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рдУрдУрдкреА рдХреЗ рд▓рд┐рдП рд╢реБрд▓реНрдХ (рдпрд╛ "рдУрдУрдкреА рдХреА рд╕реБрд╡рд┐рдзрд╛"; рд╕рдВрднрд╡рддрдГ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ "рд╕реБрд╡рд┐рдзрд╛" рдпрд╛ рд╕рд┐рд░реНрдл "рдУрдУрдкреА" рд▓рдЧрднрдЧ рдПрдХ рд╣реА рдмрд╛рдд рд╣реИ;)) - рд╕рдВрдмрдВрдзрд┐рдд рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛрдб рдХреА рдПрдХ рдмрдбрд╝реА рд░рд╛рд╢рд┐ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрдм рдореИрдВ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ - рдПрдХ рд▓рдХреНрд╖реНрдп рдерд╛ - рдмреАрдЬрджрд╛рд░ рд╕реЗрд▓реЗрд░реЛрди 2.6GHz рдкрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХрдо рд╕реЗ рдХрдо 50 рдЕрдиреБрд░реЛрдзред рдпрд╛рдиреА рд▓рдЧрднрдЧ 0.02 рд╕реЗрдХрдВрдб рдкреНрд░рддрд┐ рдЕрдиреБрд░реЛрдз, рдЬрд┐рд╕рдореЗрдВ mysql рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди, рдореИрдВ рдХреБрдЫ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдУрд╡рд░рдХреНрд▓реЙрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдХреМрди рд╕реЗ рд╣реИрдВ? рдПрдХ рдХрдк рдХреЙрдлреА рдбрд╛рд▓реЛ - рдФрд░ рдмреБрджреНрдзрд┐рдорд╛рди рд╡рд┐рдХрд╛рд╕ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ :) рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рдирд┐рдХрд▓рд╛ред
MockSoul рд╕реЗ рд╕реВрдк рдХреЗ рд▓рд┐рдП A рд╕реЗ Z рддрдХ рдкрдХрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ :)
рд╕реНрдЯреЗрдЬ 0. рддреИрдпрд╛рд░ рд╣реЛрдирд╛
рдкрд░реНрдпрд╛рд╡рд░рдг? рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдпреЛрдЬрдирд╛:
- Lighttpdред рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рддред рдХреЗ рд╕рд╛рде sys-epoll рдЪрд╛рд▓реВ;
- PHP5ред FastCGI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред PHP рдХреЛ CGI, рд╢реЗрдпрд░рдореИрдо (рдпрд╛ рдереНрд░реЗрдбреНрд╕, рд╢реЗрдпрд░реНрдбрдо рд╕реЗ рдмреЗрд╣рддрд░ - рдФрд░ рджреЛрдиреЛрдВ рдХреЛ рддреБрд░рдВрдд рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП;)ред рдореИрдВ рдХреНрдпрд╛ php рдЗрдХрдЯреНрдард╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдХрд╛ рдПрдХ рдЬрдВрдЧрд▓реА рдЙрджрд╛рд╣рд░рдг:
./configure' '--prefix=/usr/lib/php5' '--host=i686-pc-linux-gnu' '--mandir=/usr/lib/php5/man' '--infodir=/usr/lib/php5/info' '--sysconfdir=/etc' '--cache-file=./config.cache' '--disable-cli' '--enable-cgi' '--enable-fastcgi' '--disable-discard-path' '--disable-force-cgi-redirect' '--with-config-file-path=/etc/php/cgi-php5' '--with-config-file-scan-dir=/etc/php/cgi-php5/ext-active' '--without-pear' '--disable-bcmath' '--with-bz2' '--disable-calendar' '--disable-ctype' '--without-curl' '--without-curlwrappers' '--disable-dbase' '--disable-exif' '--without-fbsql' '--without-fdftk' '--disable-filter' '--disable-ftp' '--with-gettext' '--without-gmp' '--disable-hash' '--disable-ipv6' '--disable-json' '--without-kerberos' '--enable-mbstring' '--with-mcrypt' '--without-mhash' '--without-msql' '--without-mssql' '--with-ncurses' '--with-openssl' '--with-openssl-dir=/usr' '--disable-pcntl' '--without-pgsql' '--without-pspell' '--without-recode' '--disable-simplexml' '--enable-shmop' '--with-snmp' '--disable-soap' '--enable-sockets' '--without-sybase' '--without-sybase-ct' '--disable-sysvmsg' '--disable-sysvsem' '--disable-sysvshm' '--with-tidy' '--disable-tokenizer' '--disable-wddx' '--disable-xmlreader' '--disable-xmlwriter' '--without-xmlrpc' '--without-xsl' '--disable-zip' '--with-zlib' '--disable-debug' '--enable-dba' '--without-cdb' '--without-db4' '--without-flatfile' '--with-gdbm' '--without-inifile' '--without-qdbm' '--with-freetype-dir=/usr' '--with-t1lib=/usr' '--disable-gd-jis-conv' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--without-xpm-dir' '--with-gd' '--with-ldap' '--without-ldap-sasl' '--with-mysql=/usr' '--with-mysql-sock=/var/run/mysqld/mysqld.sock' '--without-mysqli' '--without-pdo-dblib' '--with-pdo-mysql=/usr' '--without-pdo-odbc' '--without-pdo-pgsql' '--without-pdo-sqlite' '--with-readline' '--without-libedit' '--with-mm' '--without-sqlite'
рдареАрдХ рд╕реЗ рд▓рд╛рдЗрдЯрдЯреИрдк рдкрд░ рдлрд╛рд╕реНрдЯ рдХрд░реЗрдВ, рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ:
fastcgi.server = (
".php" => (
"рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ" => (
<b> "рд╕реЙрдХреЗрдЯ" => "/tmp/php5-gmru-sandbox-mocksoul-lighttpd.sock" [# 1] </ b>,
<b> "рдмрд┐рди-рдкрде" => "/ usr / lib / php5 / bin / php-cgi -c" + "/ path / to / application / config / php_config_dir" [# 2 </ b>,
<b> "min-procs" => 1 [# 3] </ b>,
<b> "рдЕрдзрд┐рдХрддрдо-рд╕рдорд░реНрдердХ" => 1 [# 3] </ b>,
"рдмрд┐рди-рдкрд░реНрдпрд╛рд╡рд░рдг" => (
<b> "PHP_FCGI_CHILDREN" => "32" [# 4] </ b>,
<b> "PHP_FCGI_MAX_REQUESTS" => "3200" [# 5] </ b>
)
)
)
)
([# 1], [# 2], ... - рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХреИрд╕реЗ рдХрд░реВрдВрдЧрд╛ред рдпрджрд┐ рдЖрдк рдХреЛрдб рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдРрд╕реЗ рдирд┐рд╢рд╛рди рд╣рдЯрд╛рдиреЗ рд╣реЛрдВрдЧреЗред рдХреЛрдб рдореЗрдВ рдиреАрдЪреЗ рдореИрдВ рдЙрд╕реА рдпреЛрдЬрдирд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░реВрдВрдЧрд╛)
- [# 1] - рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рддрднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрдм рдЯреАрд╕реАрдкреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЧрдВрднреАрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдпрд╛, рд╡рд┐рдВрдбреЛрдЬ :) рдХреЗ рддрд╣рдд, рд╣рд╛рд╣рд╛)
- [# 2] - рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╣реЛрд╕реНрдЯ рдХреЛ рдкреАрд╕реАрдкреА рдХреЙрдиреНрдлрд┐рдЧ рд╕реНрдХреНрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдлреЛрд▓реНрдбрд░ рдХреЗ рд╕рд╛рде рдлреЛрд▓реНрдбрд░ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ)
- [# 3] - рдиреНрдпреВрдирддрдо-рдкреНрд░реЛрдХреНрд╕ рдФрд░ рдЕрдзрд┐рдХрддрдо-рдкреНрд░реЛрд╕реНрдЯ рдмреАрдИрдЯреА = 1 !!! рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ рдЖрдЧреЗ рдореИрдВ bytecode рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣реВрдВрдЧрд╛ред 1 рд╕реЗ рдЕрдзрд┐рдХ рдкреАрд╕реАрдкреА рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╢ рдЕрддрд╛рд░реНрдХрд┐рдХ рд╣реЛрдЧрд╛
- [# рек] - рдЬрд╛рджреВ рдиреГрддреНрдпред рд╣рдо php рдХреЛ lighttpd рд╕реЗ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрд╕реЗрд╕ рдореЗрдВ 32 рдереНрд░реЗрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдпрджрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 10 рдФрд░ рд╕рднреА 10 рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдЬрдВрдЧрд▓реА 10-рд╕реЗрдХрдВрдб-рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрдВрдЧреЗ - рд▓рд╛рдЗрдЯрдЯреАрдбреА 500 рддреНрд░реБрдЯрд┐ рджреЗрдЧрд╛! рдпрд╛рдиреА рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдирд╣реАрдВ рдмрдврд╝рддреА рд╣реИ - 32, 64, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 128 рдбрд╛рд▓реЗрдВ (рдпрд╣ рдереНрд░реЗрдбрдкреВрд▓ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)
- [# рел] - рдХреГрдкрдпрд╛ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдорд╛рд░реЗрдВ рдФрд░ nth рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдирдпрд╛ рдмрдирд╛рдПрдВред рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, php рд╕рд╣реА рдирд╣реАрдВ рд╣реИ :)ред
- рдУрдкрдХреЛрдб рдХреИрдЪрд░ред рдпрд╛ рдПрдХ рдмрд╛рдпреЛрдЯреЗрдХ рдХреИрд╢ред рдпрд╛ "рд╣рд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдлрд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рджреНрд╡рдВрджреНрд╡рд╡рд╛рдж рд╣реИ?" рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ (рдмрд╣реБрдд!) APC (рд╡реИрдХрд▓реНрдкрд┐рдХ PHP рдХреИрд╢) рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ PECL рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЖрдк eAccelerator рдпрд╛ ZendOptimizer рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрд╡рд╛рдж рд╣реИрдВ ... рд▓реЗрдХрд┐рди eAccelerator рдФрд░ APC рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп - рдореИрдВ APC рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдХреНрдпреЛрдВ? рд╣рд╛рдВ, рдХрдо рд╕реЗ рдХрдо shmem рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рдХреБрдЫ рднреА рдбрд╛рд▓рдиреЗ рдХреЗ рдЕрд╡рд╕рд░ рдХреЗ рд▓рд┐рдП :)ред рдореИрдВ рдиреАрдЪреЗ рдмрддрд╛рдКрдВрдЧрд╛ред
рдЪрд░рдг 1. рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рдкрд╣рд▓реЗ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╣рдо рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рдФрд░ рддреНрд╡рд░рд┐рдд рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдмрд╛рдж рдореЗрдВ рд╡рд┐рдЪрд▓рд┐рдд рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП (рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╢рд╛рдпрдж рдХрд┐рд╕реА рднреА рд╕реНрд╡рд╛рднрд┐рдорд╛рдиреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░% рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдЗрдЪреНрдЫрд╛ рд╣реИ)
рдХреНрд╖рдг рдЬреЛ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдЖрдк рд╢рд╛рдпрдж рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рд╣реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЕрдзрд┐рдХрддрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛_рдирд╣реАрдВ рдФрд░ рд╢рд╛рдорд┐рд▓_рдирд╣реАрдВред
- рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдмрджрд▓реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ - рд╣рдо php рдореЗрдВ array_ * рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореЗрдордиреЗ рдХреЗ рдХрд╛рд░реНрдп:
<? php
$ рдЧрд┐рд░рдлреНрддрд╛рд░ = рд╕рд░рдгреА ('рд╡рд╣', 'рд╣реИ', 'рдпрд╣');
array_walk ($ рдЧрд┐рд░рдлреНрддрд╛рд░реА, create_function ('& $ v, $ k', '$ v = $ vред "рд╣рд╛рдБ";'));
рдкреНрд░рд┐рдВрдЯ_рд░ ($ рдЧрд┐рд░рдлреНрддрд╛рд░реА);
// рдЖрдЙрдЯрдкреБрдЯ:
// рд╕рд░рдгреА
// (
// [0] => рдХрд┐ рд╣рд╛рдБ
// [1] => рд╣рд╛рдБ рд╣реИ
// [2] => рдпрд╣ рд╣рд╛рдБ
//)
// рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд▓реВрдк рдмрдирд╛рдПрдВрдЧреЗ? рдЕрдп-рдЖрд╣-рдЖрд╣тАж
?>
- рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЪрд░ рдкрд╛рд╕ рдХрд░рдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП $ a = 1; call_func (& $ a)) - рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ - рдереЛрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╕реЗ рдХреБрдЫ рднреА рдкрд╛рд░рд┐рдд рди рдХрд░реЗрдВред рд▓рд┐рдВрдХ рдкрд░ рддрднреА рдкрд╛рд╕ рдХрд░реЗрдВ рдЬрдм рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ
- рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕реНрдерд┐рд░ рдмрдирд╛рдПрдВред рдпрд╛рдиреА рдпрджрд┐, рдХрдХреНрд╖рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрдВрдж рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдЖрдо рддреМрд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- рдЖрдк рдЬрд┐рддрдирд╛ рдЪрд╛рд╣реЗрдВ рдЙрддрдирд╛ рдХрдореЗрдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдмрд╛рдИрдЯреЗрдХреЛрдб рдХреИрд╢ рдЕрднреА рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ ... рд╣рдореНрдо ... 0.000001% рджреНрд╡рд╛рд░рд╛ :)
- рдЧрд╣рд░реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдмрдЪреЗрдВред рдорд╛рдирдХ рдХрд╛рд░реНрдп - рд╕рдм-рдХреЛрдб рд╕рд╣рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ =)
- рдкрдврд╝рд┐рдП рд╕рд╛рдХреНрд╖рд░ рдбреЙрдХред рдЙрд╕реА ZendFramework рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг - рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ
- рдХреЛрдб рдХреЛ рддрд╛рд░реНрдХрд┐рдХ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рддрд╛рдХрд┐ рдЖрдк рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ 10-20 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓реЗ рд╕рдХреЗрдВ рдФрд░ рдХрд╣ рд╕рдХреЗрдВ - рдпрд╣рд╛рдБ рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЕрдиреНрдп 10-20 рд▓реЗрдВ - рдФрд░ рдХрд╣реЗрдВ, рдФрд░ рдпрд╣рд╛рдБ рдореИрдВ рдХреЗрд╡рд▓ рдЕрдиреНрдп рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдмреНрд▓реЙрдХ 30-40 рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмреЗ рдирд╣реАрдВ рдереЗред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдХрд┐рд╕реА рднреА рдмреНрд▓реЙрдЧ рдХреЛ рдЖрд░рдВрднреАрдХрд░рдг, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдСрдкрд░реЗрд╢рди рдореЗрдВ рддреЛрдбрд╝реЗрдВ, рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рд╣реЗрдЬрдирд╛ (рдЪрд▓реЛ рдПрдХ рдЪрд░ рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВ)ред рдЧрддрд┐ рдХрд╛ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реИ? рдЫрд╣ рдорд╣реАрдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рд╕рдордЭреЗрдВрдЧреЗ;)ред
- рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдореБрдЭреЗ $ a = Can рдХреБрдЫ $ v рдЗрдирд▓рд╛рдЗрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ" рдпрд╛ $ a = $ рдХреБрдЫ "ред $ рд╡реАред "рд╡рд╛рд░" рд╕реЛрдЪрдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, I (IMHO) рдХреЛ рдЪрд░ рд╕реАрдзреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдиреАрд░рд╕ рд▓рдЧрддрд╛ рд╣реИред рдмреЗрд╣рддрд░ рдкрдардиреАрдпрддрд╛:
- $ рд╡рд░ = 'рдХреБрдЫ'ред $ рдореЗрдВ 'рд▓реА'ред $ рдиреЗ 'рдЪрд░';
- $ var = рд╕реНрдкреНрд░рд┐рдВрдЯрдл ('рдХреБрдЫ% sli% s рдЪрд░', $ рдореЗрдВ, $ li);
- рдЬреЛ рдХрднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╡реЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реА рдкрд╛рд░рдВрдЧрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реНрдореГрддрд┐ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВред $ $ = 'рдХреБрдЫ' рдлрд╛рд░реНрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдгред STR_CONSTANT рдФрд░ рднреА рдмреЗрд╣рддрд░ рджрд┐рдЦреЗрдВрдЧреЗред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо - рд▓рд╛рдЗрди рдмреНрд░реЗрдХред рд╡реЗ рдЙрд╕реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ NL (NewLine) рдпрд╛ CRLF (CarretReturnLineFeed) рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ
- рдордд рднреВрд▓реЛ рдХрд┐ foreach рд╕рд░рдгреА рдХреА рдПрдХ рдкреНрд░рддрд┐ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ :)
foreach ($ рдЧрд┐рд░рдлреНрддрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ $ рдХреБрдВрдЬреА => <b> рдФрд░ $ рд╡реИрд▓ </ b>) {...}
- рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдЬреИрд╕рд╛ рдХрд┐ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рдк рдореЗрдВ рдРрд╕рд╛ рдХреНрд╖рдг рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рд░ рджреЗрддрд╛ рд╣реИ: is_null () - рдпрд╣ рдПрдХ рдмреЗрд╡рдХреВрдл рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред if (null === $ var) рдпрд╛ if ($ var === null) рдЕрдЧрд░ (is_null ($ var)) ... dibilism рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ рд╣реИред Is_null () рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ :)
- рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ, str_ * рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛, рдореИрдВ рдЖрдкрдХреА рдЕрдВрддрд░рд╛рддреНрдорд╛ рдкрд░ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд┐рдд рд╢рдмреНрдж рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ :)
рд╕реНрдЯреЗрдЬ 2. рд╣рдо рд╕рдордп рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рдмрд░реНрдмрд╛рджреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред
рддреЛ ... рдпрд╣рд╛рдБ рдЖрдкрдиреЗ рдХреБрдЫ рд▓рд┐рдЦрд╛ рд╣реИред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдЖрдкрдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рдмрд┐рдирд╛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЙрдлрд┐рдЧ рд╣реЛрддреЗ рд╣реИрдВ:
- DB рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
- рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдЯрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
- рдбреАрдмреА рдиреЗ рдЦреБрдж рд╕реЗ рдкреВрдЫрддрд╛рдЫ рдХреА
- рдХреНрдпрд╛ рд╣рдо рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЛ рдХрд╣реАрдВ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ? рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рдмрд╛рд░ рдЙрдиреНрд╣реЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ? рдЖрдо рддреМрд░ рдкрд░ рджреЗрдЦреЛ рд╣рдо рдПрдХ рд╣реА рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ!
- рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛? рдФрд░ рдХреНрдпреЛрдВ? рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрд┐рдирд╛ IO рдХреЗ рд╕рд╛рде рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЖрджрд┐)ред рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреБрдЫ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдкреИрдЯреАред рдмрдбрд╝реА (рдХреБрдЫ рдЧрд┐рдЧ рдЕрдиреБрдХреНрд░рдорд┐рдд рдлрд╝рд╛рдЗрд▓) - рдЖрд╡рд╢реНрдпрдХрддрд╛
рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рднреА рдХреЛ рдорд╣рддреНрд╡ рджрд┐рдпрд╛ред рдФрд░ рдЕрдм, рдкреНрд░рддреНрдпреЗрдХ рдЕрдкреНрд░рд╛рдкреНрдп рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП:
DB рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
рдпрд╣ рд╕рд░рд▓ рд╣реИ - рдпрджрд┐ рдЖрдк рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рд▓рд┐рдХ рд╣реИрдВ - рд▓рдЧрд╛рддрд╛рд░ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ! PDO_MYSQL, MYSQL - рд╡реЗ рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ)
рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдЯрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдордЬрд╝рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ =)ред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ ZendFramework рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдХрд┐рддрдиреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реАред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ - 300 рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо (!!!!)ред рдпрджрд┐ рдЖрдк рдПрдХ рдмрд╛рдЗрдЯрдХреЛрдб рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓рдВрдмреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдЧреАред
рд╕рдорд╛рдзрд╛рди "рд▓реЙрдХ" рдЦреБрдж рд╕реЗ рдкрд╛рдпрд╛ рдЧрдпрд╛ - рдпрд╣ рд╕рдм рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЯрдирд╛ред рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ - рдФрд░ рдХреИрд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрд╢рд╛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ - рдФрд░ рдХреНрдпрд╛ рдХрднреА-рдХрднреА? рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрд╕ рд╕рдордп рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд╣рд▓реВ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ "рд╢рд┐рдерд┐рд▓")
рдЬрдВрдЧрд▓реА рдкрд░рд┐рдгрд╛рдо -
http://www.mocksoul.ru/pub/dev/mkzend.phpsрд╡рд╣рд╛рдБ:
- рдХрд┐рддрдиреА рдмрд╛рд░ рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдВрдЪ - рдПрдкреАрд╕реА рдХреИрд╢ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦреЗрдВ
- рдПрдХ рдЧреЛрд▓реА рдЦреАрдВрдЪреЗрдВ
- рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╝реЗрдб рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ :)ред рдЬреИрд╕реЗ, рд╣рдордиреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдХрд╛рдЯ рджреАрдВ, рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ, рдЬреЛ php рдЯреИрдЧреНрд╕ рдХреЛ рдЦреЛрд▓рддреА рд╣реИрдВ рдФрд░ рдмрдВрдж рдХрд░рддреА рд╣реИрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рди ... рд╣рдо рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ :) рдЕрдиреНрдп рд╕реНрд░реЛрдд рджреЗрдЦреЗрдВ
- рд╣рдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рд╡рд┐рд╢рд╛рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ ...)
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрдерд┐рд░ рд╣реИ рдФрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХреИрдж рд╣реИред рдЖрдкрдХреЛ рдПрдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ред рдЖрдк 100% рд╕рдВрднрд╛рд╡рдирд╛ =) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, 300 рдлрд╛рдЗрд▓реЗрдВ 2 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕ рдХреА рдЧрдИрдВ, рдЙрдиреНрд╣реЗрдВ 0.3 рд╕реЗрдХрдВрдб рдореЗрдВ рдмрд╛рдЗрдЯ рдХреИрд╢ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛, рдФрд░ рдЙрддреНрдкрдиреНрди рд╕реБрдкрд░рдлрд╛рдЗрд▓ рдХреЛ рдПрдХ рдмрдбрд╝реЗ 0.7sec рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ 0.003sec рдореЗрдВ рдХреИрд╢ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рд▓рдЧрднрдЧ 3 рдмрд╛рд░ рддреНрд╡рд░рд┐рдд рд░реВрдк рд╕реЗ рддреНрд╡рд░рд┐рдд рдХрд┐рдпрд╛ :)ред рдЙрдиреНрдорддреНрдд рдЕрдиреБрдХреВрд▓рди, рд╣рд╛рд▓рд╛рдВрдХрд┐ред рд╡рд┐рдзрд┐ рдПрдХ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА
DBA рдХрд╛ рднреНрд░рдордг рдХрд░реЗрдВ рдФрд░ рдЕрдВрдд рдореЗрдВ MYSQL_QUERY_CACHE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред My.cnf рдореЗрдВ,
query_cache_size = 100M
рд▓рд┐рдЦреЗрдВред рд╣рдо рдХреИрд╢ рдХреЛ
show status like 'qcache%'
рдлреЙрд▓реЛ рдХрд░рддреЗ рд╣реИрдВред рдЕрднреА рднреА рдмрд╣реБрдд рдХрд╕рдХрд░ рдкрдврд╝рд╛ MySQL рдбреЙрдХреНрд╕ рдХреНрд╡реЗрд░реА рдХреИрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░реЛ - рдХреИрд╢!
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреЙрдиреНрдлрд┐рдЧ рдкрдврд╝рд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рднрд╛рдк рд▓реЗ рд░рд╣реЗ рд╣реИрдВ? рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╕рд░рдгреА рд╣реИ? рдЦреИрд░, рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХреНрдпреЛрдВ? ) рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ - рдПрдкреАрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд╛рде рдореЗрдВ рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рд╕реНрдореГрддрд┐! :) рдХрд╛рдо рдХреА рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рддреЗрдЬ рдЧрддрд┐ ... рдЗрд╕рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ - рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдПрдХрддреНрд░ рдХреА рдЧрдИ рд╡рд╕реНрддреБрдПрдВ, рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рд▓рд╛ "рд╡рд┐рд╡рд░рдг рддрд╛рд▓рд┐рдХрд╛" рд╣реИ (рдпрд╣ Zend_Db_Table_ * рдХрд╛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╣реИ)ред рдбреЗрдЯрд╛ рдХреИрд╢ рд╕реЗ рдЕрдХрд▓реНрдкрдиреАрдп рдЧрддрд┐ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - 0.000001 рдХрд╣реАрдВред рдореЗрдореЛрд░реА рдореЗрдВ, рдпрджрд┐ рдЖрдк рдХреБрдЫ рднреА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рд┐рд░реНрдл рдбреЙрдлреАрдЧрд╛ рдбреЗрдЯрд╛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ 1 рдЯрдордЯрдо рд╕рдВрднрд╡ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдЧреБрдЪреНрдЫрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ IO рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ - рдмреЗрд╣рддрд░ рдореЗрдореЛрд░реАред рдЖрдкрдХреА рдпреЛрдЧреНрдпрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ - рдЧрддрд┐ рдореЗрдВ 10 рд╕реЗ 100% рдХреА рд╡реГрджреНрдзрд┐ред рдПрдкреАрдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рджреЗрдЦреЗрдВ;)
рдЖрдкрдХреЛ FS рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
FS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рд░рдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реЗрдВ рдпрджрд┐ рд╡рд╣ рдореЗрдореЛрд░реА рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдПрдХ рд▓реЙрдЧ рдпрд╛ рдХреНрд╡реЗрд░реА рдЖрдБрдХрдбрд╝реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ - рдПрдкреАрд╕реА рдкрд░ рдЬрд╛рдПрдВ! рдФрд░ рдмрдЪрд╛рдУ, рдХрд╣рддреЗ рд╣реИрдВ, рдкреЗрдВрдЪ рдкрд░ рд╣рд░ 5 рдорд┐рдирдЯ рдореЗрдВред
рдЪрд░рдг 3. рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдХрд░ рдердХ рдЧрдПред рд╣рдо рдЕрдкрдиреА рдЖрдБрдЦреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ!
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рдЦреЛрдЬ рдереАред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛:
- рд╣рдореЗрдВ PECL APD (рдЙрдиреНрдирдд PHP рдбреАрдмрдЧрд░) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдПрдкреАрдбреА рдХреЗ рд▓рд┐рдП рдбрдВрдкрдбрд┐рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
zend_extension = / usr / lib / php5 / lib / php / extension / no-debug-non-zts-20060613 / apd.so
apd.dumpdir = "/ tmp / php-apd- рдбрдВрдк"
- рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░
apd_set_pprof_trace();
рд▓рд┐рдЦреЗрдВ apd_set_pprof_trace();
, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдбрдВрдк рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ - рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ 1-100 рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рд╣рдорд╛рд░реЗ / tmp / php-apd- рдбрдВрдк рдореЗрдВ рд╕рд╣реЗрдЬреА рдЬрд╛рдПрдЧреА
- рдЕрдм рд╣рдо рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдпрд╛ рддреЛ рд╕реАрдзреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рд╕рд╛рде рдореЗрдВ рдПрдкрд┐рдб pprofp рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрддрд╛ рд╣реИ
- рдФрд░ рд╣рдо рдПрдХ рд╕реБрдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдПрдХреАрдХреГрдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ :)ред APD рдХреЗ рд╕рд╛рде, pprofp рдХреЗ рдЕрд▓рд╛рд╡рд╛, pprof2calltree рднреА рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреИрд╢рдЧреНрд░рд┐рдВрдб рдФрд░ рдХреЗрдЪрдЧрдЧреНрд░рд┐рдВрдб рджреНрд╡рд╛рд░рд╛ рд╕рдордЭреЗ рдЧрдП рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдбрдВрдк рдХреЛ рдзрд░реНрдорд╛рдиреНрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ kcachegrind рдореЗрдВ рдЦреЛрд▓реА рдЧрдИ рд╣реИ - рдФрд░ рдЦреБрд╢реА рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдпрд╛рдБред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ - рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл PHP рдХреЗ рд▓рд┐рдП рд╣реИ, рдореИрдВрдиреЗ рдРрд╕рд╛ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ;)
рдЪрд░рдг 4. рдЬрд╛рдБрдЪ
ab
рдпрд╛
ab2
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 1 URL рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЧрддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдмреЗрд╡рдХреВрдлреА рд╣реИред
рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рд╡рд┐рдХрд▓реНрдк рд╕рднреА (рдпрд╛ рд╕рднреА рдирд╣реАрдВ;) рдХреА рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдПрдХ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ,
рдШреЗрд░рд╛рдмрдВрджреА рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рд╢рд┐рдХрдВрдЬрд╛ рдХреЗ рд▓рд┐рдП TPS (TransactionsPerSecond) (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, sysstat рдкреИрдХреЗрдЬ рд╕реЗ iostat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ, рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ, рджреЗрдЦреЗрдВ рдХрд┐ рдЕрдВрдд рдореЗрдВ 2xx рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВред
рд╡рд╣ рд╕рдм рдХреНрдпреЛрдВ рд╣реИ?
рдЪреАрдЬреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдЬрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдврд╝рддреА рд╣реИред 1 рд╕рд░реНрд╡рд░ рдкрд░ 10% рдХреА рдЧрддрд┐ рд╕реЗ рд╡реГрджреНрдзрд┐ 10% рдХреЗ рдмрд░рд╛рдмрд░ рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рджреЗрддреА рд╣реИред рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 10 рд╕рд░реНрд╡рд░ рд╣реИрдВ, рддреЛ рдЧрддрд┐ рдореЗрдВ 10% рдХреА рдмрдврд╝реЛрддрд░реА рджреВрд╕рд░реЗ 11 рд╡реЗрдВ рд╕рд░реНрд╡рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧреАред рдпрд╛рдиреА 1 рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ + 100%ред рдпрд╣ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рдпрд╣ рдкреИрд╕рд╛ рд╣реИред рдФрд░ рдпрд╣ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛ рд╣реИ;)ред
eeee
2 рджрд┐рди рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдХреЙрд▓рд░рдмреЛрди рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдФрд░ рдЙрд╕рдиреЗ рдпрд╣ рд╕рдм рдПрдХ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрд╛ рдерд╛ред рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдорд╛рд░рдХ !!! :))
рддрд░рд╣ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ, рд╡рд╛рджрд┐рдо рдмрд░реНрдорд╛рдХрд┐рди рдЙрд░реНрдл тАЛтАЛрдореЙрдХрд╕реЙрд▓ ┬й 2007