
рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореЗрд░рд╛ рдирд╛рдо рддреИрдореВрд░ Shagiakhmetov рд╣реИ, рдореИрдВ
Badoo рдкрд░ рдПрдХ PHP рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдХрд╛рдо рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдкреНрд░рджрд░реНрд╢рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдирджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред PHP рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рд╣рд╛рдпрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд╣реИред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдордиреЗ
рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ
рдмрд╛рдд рдХреА рдХрд┐ рд╣рдо рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ: рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдореЗрдВ рд╕реЗ рдПрдХ, рдЬрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдб рдХреЗ рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреАрдврд╝реА рд╕рдордп рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ
XHProf рд╣реИ ред рдпрд╣ PHP рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд▓рдбрд╝рд╛рдХреВ рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдб рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдореИрдВ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡реЛрдВ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд░рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рддрд╛рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд┐рдЧрдбрд╝рдиреЗ рдкрд░ рдХреНрдпрд╛ рдФрд░ рдХрдм рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХреЗрдВ, рд╕рд╣реА? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╣рдордиреЗ
рд▓рд╛рдЗрд╡рдкреНрд░реВрдл рд╡рд┐рдХрд╕рд┐рдд
рдХрд┐рдпрд╛ , рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред
рд╣рдорд╛рд░рд╛ рдЯреВрд▓ рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рдХрд┐рд╕реА рднреА рднрд╛рдЧ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдвреВрдВрдвреЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЧрд┐рд░ рдЧрдпрд╛ рдерд╛ред рдЗрд╕реА рд╕рдордп, рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдВрдХрдбрд╝реЗ рдЬрдорд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдХреНрд░рд┐рдп рд░рд╣рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрд╢ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
XHProf рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, XHProf рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рдпрд╣ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП PHP рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд╣реИред рдпрд╣ рдлреЗрд╕рдмреБрдХ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рдерд╛ред рдЗрд╕рдореЗрдВ рдХрдИ рдХрд╛рдВрдЯреЗ (
рдЕрдкрдлреНрд░реЗрд▓рд░ ,
рдЯрд╛рдЗрдбрд╡реЗрдЬрд╝ ) рд╣реИрдВ, рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╕реНрддрд░ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИред
XHProf рд╕рднреА рдлрд╝рдВрдХреНрд╢рди / рдореЗрдердб рдХреЙрд▓ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдХреБрдЫ рдУрд╡рд░рд╣реЗрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реЗ рдЗрддрдиреЗ рдмрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
XHProf рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ:
$data = [ 'parentMethodName==>childMethodName' => [ 'ct' => 1 'wt' => 8 'cpu' => 11 'mu' => 528 'pmu' => 0 ] ];
рдЬрд╣рд╛рдБ
parentMethodName
рдФрд░
childMethodName
рдХреНрд░рдорд╢рдГ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ;
ct
- рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛;
wt
- рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп (рдЗрд╕рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдмрд┐рддрд╛рдП рдЧрдП рд╕рдордп рдФрд░ I / O рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╢рд╛рдорд┐рд▓ рд╣реИ);
cpu
- рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдкрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордп;
mu
- рдПрдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рд╕реНрдореГрддрд┐ рдХреА рдЦрдкрдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди;
pmu
- рдПрдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдкреАрдХ рдореЗрдореЛрд░реА рдЦрдкрдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиред
рдХреБрдЫ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рднреА рд╕рдВрднрд╡ рд╣реИрдВред
XHProf рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдорд┐рд▓рддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рдмреБрд▓рдмреБрд▓рд╛ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рдгрд╛рдо <?php class ArrayGenerator { public function getRandomArray(int $count): array { $array = []; for ($i = 0; $i < $count; $i++) { $array[] = rand(0, 1000); } return $array; } } class BubbleSorter { public function sort(&$array): void { $len = count($array); for ($i = 0; $i < $len ; $i++) { for ($j = 0; $j < $len - $i - 1; $j++) { if ($array[$j] > $array[$j + 1]) { $this->swap($array[$j], $array[$j + 1]); } } } } private function swap(&$a, &$b): void { $tmp = $a; $a = $b; $b = $tmp; } public function isSorted(array $array): bool { $len = count($array); for ($i = 0; $i < $len - 1; $i++) { if ($array[$i] > $array[$i + 1]) { return false; } } return true; } } class ArrayPrinter { public function print(array $array, string $delimiter = ' '): void { echo implode($delimiter, $array) . PHP_EOL; } } xhprof_enable(); $n = 10; $arrayGenerator = new \ArrayGenerator(); $array = $arrayGenerator->getRandomArray($n); $sorter = new BubbleSorter(); if (!$sorter->isSorted($array)) { $sorter->sort($array); } $printer = new \ArrayPrinter(); $printer->print($array); $xhprof_data = xhprof_disable();

рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рди рд╡рд┐рдзрд┐рдпреЛрдВ рдиреЗ рдХрд┐рддрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
рдЖрдк рд╕рдмрд╕реЗ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рддрд░реАрдХреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдЧреНрд░рд╛рдл рдХреЛ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

XHProf рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрдбрд╝реА рддрд╕реНрд╡реАрд░ рджреЗрдЦрдирд╛ рднреА рдЬрд░реВрд░реА рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдХреИрд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрдкрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЙрдирдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд▓рд╛рдЗрд╡рдкреНрд░реВрдл: рд╕рдордЧреНрд░ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ рдмрдирд╛рдП рд░рдЦреЗрдВ
рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдЗрддрд┐рд╣рд╛рд╕ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЙрдиреНрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдирд┐рд░рдВрддрд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рд▓реЙрдиреНрдЪ рд╕реЗ рд▓реЙрдиреНрдЪ рддрдХ рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ рдХреЗ рдкреНрд░рднрд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдИ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдФрд╕рдд рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП рдХреБрд▓ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреНрдпреВрдирддрдо, рдЕрдзрд┐рдХрддрдо, рдФрд╕рдд рдФрд░ 95 рд╡рд╛рдВ рдкреНрд░рддрд┐рд╢рддред рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдЯреВрд▓ рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдХреБрдЫ рд╕реАрдорд╛рдПрдВ рд╣реИрдВред
рдПрдЧреНрд░реАрдЧреЗрдЯрд░ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
- рд╣рд░ Nth рдЕрдиреБрд░реЛрдз рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрд░реЗрдЦрд╛ред
- рдПрдХрддреНрд░рд┐рдд рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд╛ рджреИрдирд┐рдХ рдПрдХрддреНрд░реАрдХрд░рдгред
- рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдорд╛рдкрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реЗрдЦрд╛рдВрдХрди рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, wt, cpu, mu, pmu рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИред
- рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦреЗрдВред
- рдирд╡реАрдирддрдо рдПрдЧреНрд░реАрдЧреЗрдЯреЗрдб рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлреНрд▓реЗрдо рдЧреНрд░рд╛рдл ред
- рдРрд╕реА рдХреНрд╡реЗрд░реАрдЬрд╝ рдвреВрдВрдвреЗрдВ, рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ
рдкреНрд░рддрд┐рдмрдВрдз:
- рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдЯреВрд▓ рдПрдХ рдПрдЧреНрд░реАрдЧреЗрдЯрд┐рдВрдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдзреАрдорд╛ рдПрдХ) рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ - рд╣рдореЗрдВ рдЕрдВрддрд┐рдо рджрд┐рди рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрджрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдореЗрдВ рдХреЛрдИ рдЕрдиреБрд░реЛрдз рдлрд┐рд╕рд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рдФрд╕рдд рдореВрд▓реНрдп, 95 рд╡реЗрдВ рдкреНрд░рддрд┐рд╢рдд рдФрд░ рдЕрдзрд┐рдХрддрдо рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
- рдЖрдк рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдкреВрд░реНрдг рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХреНрд╕рдПрдЪрдкреНрд░реЙрдл рдХреЗрд╡рд▓ рдЕрджреНрд╡рд┐рддреАрдп рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдЬреЛрдбрд╝реЗ рдХреЛ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред
- XHProf рдУрд╡рд░рд╣реЗрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред рдЕрдВрддрд░ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рдорд╛рдкрддреЗ рд╕рдордп рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЛ рд╕рд╛рдЗрдЯ рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╣реИ :
php composer.phar require badoo/liveprof # Run a script to configure database LIVE_PROFILER_CONNECTION_URL=mysql://db_user:db_password@db_mysql:3306/Profiler?charset=utf8 php vendor/badoo/liveprof/bin/install.php
рдпрд╣ 5.4 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ PHP рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреНрдпреВрдирддрдо рдУрд╡рд░рд╣реЗрдб рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд▓рдбрд╝рд╛рдХреВ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЯреВрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ: XHProf , uprofiler рдпрд╛ Tideways ред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рд░реВрдкрд░реЗрдЦрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХреЛрдб рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧ:
<?php include 'vendor/autoload.php'; \Badoo\LiveProfiler\LiveProfiler::getInstance()->start();
рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░, рдПрдХ рдПрдХрддреНрд░реАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐ рджрд┐рди рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХрддреНрд░рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред рдПрдХрддреНрд░реАрдХрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдпрд╛ рдкреБрди: рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдм рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
- рдкреНрд░рддрд┐ рджрд┐рди рдХрдо рд╕реЗ рдХрдо;
- рдкреНрд░рддрд┐ рджрд┐рди рдЕрдзрд┐рдХрддрдо;
- рджреИрдирд┐рдХ рдФрд╕рдд
- рджрд┐рди рдХрд╛ 95 рд╡рд╛рдБ рдкреНрд░рддрд┐рд╢рддред
- рдПрдЧреНрд░реАрдЧреЗрдЯрд░ рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛:
git clone https:
- рдкрд╣рд▓реА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ, рдЦреЗрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдФрд░ src / config / services.yaml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд░ рд╕реНрдерд╛рдкрдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
docker-compose exec web bash install.sh
- рдореБрдХреБрдЯ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдбреЗрдЯрд╛ рдХреА рдПрдХрддреНрд░реАрдХрд░рдг рдФрд░ рд╕рдлрд╛рдИ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
- рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
docker-compose exec web php /app/bin/cli.php example:a-week-degradation
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рд╡рд░рдг
рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ: 127.0.0.1:8000ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрдХрддреНрд░рд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕реВрдЪреА рд╡рд╛рд▓рд╛ рдПрдХ рдкреГрд╖реНрда рдЦреБрд▓рддрд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рднреА рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ, рдФрд░ рдирд╡реАрдирддрдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╡реЗрд░реА рдХреЛ рдлрд┐рд░ рд╕реЗ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рдПрдХ рдХреНрд╡реЗрд░реА рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ:

рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкреНрд░рджрд░реНрд╢рди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдФрд░ рдЧреНрд░рд╛рдлрд╝ рдХреА рд╕реВрдЪреА рд╡рд╛рд▓рд╛ рдПрдХ рдкреГрд╖реНрда рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЦрдкрдд рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЧреНрд░рд╛рдл:
рдкреВрд░реНрдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдкреГрд╖реНрда рдЖрдкрдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд░реБрдЪрд┐ рдХреА рд╡рд┐рдзрд┐ рдЦреЛрдЬрдиреЗ рдФрд░ рд░реЗрдЦрд╛рдВрдХрди рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдХрд░ рд░реЗрдЦрд╛рдВрдХрди рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
рдЕрдВрддрд┐рдо рдПрдХрддреНрд░рд┐рдд рдХреНрд╡реЗрд░реА рдХреЗ рд▓реМ рдЧреНрд░рд╛рдл рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рднрд╛рд░реА рднрд╛рдЧреЛрдВ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рдкрд╣рдЪрд╛рдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредXHProf рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд░рд┐рдгрд╛рдо рдХреА рд╕рдЯреАрдХрддрд╛ рдкрд░ рдХреБрдЫ рд╕реАрдорд╛рдПрдВ рд▓рдЧрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдПрдХ рдкреВрд░реНрдг рдХреЙрд▓ рдЯреНрд░реА рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдорд╛рддрд╛-рдкрд┐рддрд╛-рдмрдЪреНрдЪреЗ рдЬреЛрдбрд╝реЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдЖрд╡реЗрджрди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рд╕рдордп рдХреА рд░рд╛рд╢рд┐ рдорд┐рд▓рддреА рд╣реИред рдПрдХ рд▓реМ рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдкреВрд░реНрдг рдХреЙрд▓ рдЯреНрд░реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреЗрдбрд╝ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рддреЗ рд╕рдордп, рдорд╛рддрд╛-рдкрд┐рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрди рддрд░реАрдХреЛрдВ рдХреА рд╕реВрдЪреА рд╡рд╛рд▓рд╛ рдПрдХ рдкреГрд╖реНрда рдЬреЛ рдЪрдпрдирд┐рдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рджреМрд░рд╛рди рдзреАрдорд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдмрдЪреНрдЪреЗ рдХреА рдХреЙрд▓ рдиреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐
ServiceApi::getAvailableServices()
рд╡рд┐рдзрд┐ рдиреЗ 116 рдПрдордПрд╕
ServiceApi::getAvailableServices()
рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг
ServiceApi::getGifts()
(56 рдПрдордПрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рд╡рд░реНрддрди) рдФрд░
ServiceApi::getConfigForList()
рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ 1 рд╕реЗ 5 (рдЕрдиреНрдп 50 рдПрдордПрд╕) рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдерд╛ред

рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдХреНрд╡реЗрд░реА рдиреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╡реЗрд░реА рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд┐рдирд╛ рдзреАрдореА рд╣реЛ рдЧрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рд╡рд╛рд▓рд╛ рдкреГрд╖реНрда рдорджрдж рдХрд░реЗрдЧрд╛:
рдРрд╕рд╛ рдкреГрд╖реНрда рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИредрдпрд╣ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдкреНрд░рдпреБрдХреНрдд рдХреЛрдб рдЦреЛрдЬрдиреЗ рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧреА:

рдЕрдиреБрдХреВрд▓рди рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рдЙрдкрдХрд░рдг рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдкрд░реНрдпрд╛рдкреНрдд рдЕрд╡рд╕рд░ рд╣реИрдВ:
рдирд┐рд╖реНрдХрд░реНрд╖
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЯреВрд▓ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдЕрддрд┐рд░рд┐рдХреНрдд рдЯрд╛рдЗрдорд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рдХреЗ рдХрд┐рд╕реА рднреА рднрд╛рдЧ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдпрд╣ рдЕрдиреБрдХреВрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реБрд╡рд┐рдзрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рд╕реЗ рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдЖред
рдпрд╣ GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ:
github.com/badoo/liveprof , рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕
github.com/badoo/liveprof-ui рд╣реИ ред
рдЙрдкрдХрд░рдг рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рд╕рд╛рде, рдпрд╣ рдФрд░ рднреА рдмреЗрд╣рддрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ XHProf рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдкреНрд░реЛрдлрд╛рдЗрд▓рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдФрд░ рд╕рд╛рде рд╣реА рд╕рдорд░реНрдерд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕реЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рд╣рдореЗрдВ
Telegram , рдмрдЧреНрд╕ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдкреНрд░рд╢реНрди рднреЗрдЬреЗрдВ - рд╕реАрдзреЗ
GitHub рдкрд░ ред рд╣рдо рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддреЗ рд╣реИрдВ!
рд╡рд┐рдЪрд╛рд░ рдФрд░ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП
рдЧреНрд░реЗрдЧрд░реА рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рджред