рдПрдХ рд▓рд╛рдЗрд╡ рд╕рд░реНрд╡рд░ рдкрд░ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ

рд╢реБрдн рджреЛрдкрд╣рд░, рд╕рдореБрджрд╛рдп!

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ: рд╕рд╛рдЗрдЯ рдзреАрд░реЗ-рдзреАрд░реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред
рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХрд┐рди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣реИрдВред рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП xdebug рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдмрдбрд╝рд╛ рд▓реЛрдб рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рдпрдВ рдорд╛рдк рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЪреБрдирд╛ рдЬреЛ рдЖрдкрдХреЛ рд╕рд╛рдЗрдЯ рдкрд░ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╕рдорд╛рди рдЖрдБрдХрдбрд╝реЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ - рдкрд┐рдирдмрд╛ред

рд╣рд╛рдмрд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд┐рдирдмрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред рдпрджрд┐ рдЖрдкрдиреЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ, рддреЛ рдЖрдк рд▓рд┐рдВрдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП, рдореИрдВ рддреБрд░рдВрдд рдкрд░рд┐рдгрд╛рдо рдХрд╛ рд▓рд┐рдВрдХ рджреВрдВрдЧрд╛ред
рдкреНрд▓рд╕ 1 WAPStart рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 1000 рд╕реЗ рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рднрд╛рд░ рдХреЗ рд╕рд╛рде рдЪрд▓рддрд╛ рд╣реИред

рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣

рдкрд┐рдирдмрд╛ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ (рдпреВрдбреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдмрд╣реБрдд рдЬрд▓реНрджреА) рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рдирд┐рд╢рд╛рди рднреЗрдЬрддрд╛ рд╣реИ (рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдЯрд╛рдЗрдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдбреЗрдЯрд╛ рдХреЛ MySQL рддрд╛рд▓рд┐рдХрд╛рдУрдВ (рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
$timer = pinba_timer_start(array('tag' => 'some_logic')); .... pinba_timer_stop($timer); 

рдЯреНрд░реА рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо 2 рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреИрдЧреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ - рдЯреНрд░реА_рдЖрдИрдбреА (рд╣рд░ рдмрд╛рд░ рдПрдХ рдпреВрдирд┐рдХ рдЖрдИрдбреА) рдФрд░ рдЯреНрд░реА_рдкрд░реЗрдВрдЯ_рдЖрдИрдбреА - рдпрд╣ рдЯреНрд░реА_рдб рдЯрд╛рдЗрдорд░ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

 $parent_timer = pinba_timer_start(array('tag' =>'some_logic', 'tree_id' => 1, 'tree_parent_id' => 'root')); $child_timer = pinba_timer_start(array('tag' =>'child_logic', 'tree_id' => 2, 'tree_parent_id' => 1)); pinba_timer_stop($child_timer); pinba_timer_stop($parent_timer); 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд░реНрд╡рд░ рдкрд░, рдЖрдк рдЯрд╛рдЗрдорд░ рдХреЗ рдШреЛрдВрд╕рд▓реЗ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдкрдардиреАрдп рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдордиреЗ рд╕рдордп рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЯрд╛рдЗрдорд░ рд░рдЦреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, sql рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде, рдЬрдм рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЖрджрд┐)ред

рдбреЗрдЯрд╛ рдХреА рддреИрдпрд╛рд░реА

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкрд┐рдирдмрд╛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдорд┐рдд (PRIMARY рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд┐рдирдмрд╛ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрди рдорд┐рдирдЯ рд╕реЗ рдкреБрд░рд╛рдирд╛ рдбреЗрдЯрд╛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ - 5 рдорд┐рдирдЯ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдЖрдк рдкрд┐рдирдмрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реВрдЪрдХрд╛рдВрдХ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдЕрдиреБрдХреНрд░рдорд┐рдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкрд┐рдирдмрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ MyISAM рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВред

 truncate table pinba_cache.request; truncate table pinba_cache.tag; truncate table pinba_cache.timer; truncate table pinba_cache.timertag; insert ignore into pinba_cache.request select * from pinba.request; insert ignore into pinba_cache.tag select * from pinba.tag; insert ignore into pinba_cache.timer select * from pinba.timer; insert ignore into pinba_cache.timertag select * from pinba.timertag; 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдкрд┐рдирдмрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд┐рдирдмрд╛_рдЪреЗрдЪреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдХреЙрдкреАред

рдХрд╛рдо рдХреЗ рд▓рд┐рдП рднреА рд╣рдореЗрдВ рдПрдХ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдЯреНрд░реА_рдб рдФрд░ рдЯреНрд░реА_рдкрд░реЗрдВрдЯ_рдб рдлреАрд▓реНрдб рд╣реЛрдВрдЧреЗред

 truncate table pinba_cache.timer_tag_tree; insert ignore into pinba_cache.timer_tag_tree SELECT * FROM ( SELECT null, timer_id, request_id, hit_count, timer.value, GROUP_CONCAT(timertag.value) as tags , (select timertag.value from pinba_cache.timertag where timertag.timer_id=timer.id and tag_id = (select id from pinba_cache.tag where name='treeId')) as tree_id , (select timertag.value from pinba_cache.timertag where timertag.timer_id=timer.id and tag_id = (select id from pinba_cache.tag where name='treeParentId')) as tree_parent_id FROM pinba_cache.timertag force index (timer_id) LEFT JOIN pinba_cache.timer ON timertag.timer_id=timer.id where not tag_id in ((select id from pinba_cache.tag where name='treeId'), (select id from pinba_cache.tag where name='treeParentId')) group by timertag.timer_id order by timer_id ) as tmp GROUP BY tree_id; 

рдЯрд╛рдЗрдорд░_рдЯреИрдЧ_рдЯреНрд░реА рдЯреЗрдмрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИред рд╢реЗрд╖ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд┐рдирдмрд╛ рдХреА рддрд░рд╣ рд╣реА рд╣реИред

 CREATE TABLE `timer_tag_tree` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `timer_id` INT(10) NOT NULL DEFAULT '0', `request_id` INT(10) NULL DEFAULT NULL, `hit_count` INT(10) NULL DEFAULT NULL, `value` FLOAT NULL DEFAULT NULL, `tags` VARCHAR(128) NULL DEFAULT NULL, `tree_id` VARCHAR(35) NOT NULL DEFAULT '', `tree_parent_id` VARCHAR(35) NOT NULL DEFAULT '', PRIMARY KEY (`id`), INDEX `timer_id` (`timer_id`), INDEX `tree_id_tree_parent_id` (`tree_id`, `tree_parent_id`), INDEX `tree_parent_id_tree_id` (`tree_parent_id`, `tree_id`) ) COLLATE='utf8_general_ci' ENGINE=MyISAM 

рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдЕрдм - рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдкред рд╣рдордиреЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛, рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдмрд╛рдж рдХреЗ рдХрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдЗрд╕ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧреАред
рдПрдХ рдкреЗрдбрд╝ (рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рд╕реЗ) рдЖрдЙрдЯрдкреБрдЯ рдХреИрд╕реЗ рдХрд░реЗрдВ - рдореИрдВ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдбрд╝рдЪрдиреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реИрдХрдбрд╝реЛрдВ php рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ (рдЯрд╛рдЗрдорд░) рдХрд╛ рдЕрдкрдирд╛ рдкреЗрдбрд╝ рд╣реИред рд╣рдореЗрдВ рдЗрди рдкреЗрдбрд╝реЛрдВ рд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдкреЗрдбрд╝ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпреВрдирд┐рдпрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рднреА рдкреЗрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдиреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛ рдпреЛрдЧ рдорд╛рдирддреЗ рд╣реИрдВред
рджреЛ рдкреЗрдбрд╝реЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдХрд░, рдЖрдк рд╕рднреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрдХреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпреЛрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рдЕрдкреНрд░рд┐рдп рдЖрд╢реНрдЪрд░реНрдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдПрдХ рдзреАрдорд╛ рд╕рдордпред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рддрд╕реНрд╡реАрд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, 2 рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреА рдХрдард┐рдирд╛рдИ рд╣реЗ (рдПрди * рдПрди) (рдЪреМрдХрд╕ рдореБрдЭреЗ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдк рдПрди * рд▓реЙрдЧ (рдПрди) рдореЗрдВ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдХреВрд▓рди рд╡рд┐рдзрд┐ рд╣реЛрдЧреА, 3 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ), рдЬрд╣рд╛рдВ рдПрди рд╣реИ -рд╡реГрдХреНрд╖ рдореЗрдВ рдиреЛрдбреНрд╕ред рддрджрдиреБрд╕рд╛рд░, рдЫреЛрдЯреЗ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдлрд╛рдпрджреЗрдордВрдж рд╣реИ, рдФрд░ рдмрд╣реБрдд рд╣реА рдиреБрдХрд╕рд╛рдирджрд╛рдпрдХ рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рд╣реИрдВред
рд╣рдо рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдЖрдЗрдП рдПрдХ рд╕реНрддрд░ 1 рдХреЗ рдкреЗрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдкреЗрдбрд╝ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХреЗ рджреЛ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдпреЛрдЧ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХрд╛ рдПрдХ рдкреЗрдбрд╝ рд╣реИ, рдЖрджрд┐ред рдРрд╕реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХреЗ рдФрд░ рдЕрдзрд┐рдХ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдПрдХ рдмрдбрд╝реЗ рд╕реНрддрд░ рдХреА рдПрдХ рдиреНрдпреВрдирддрдоред рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░реЗрдВрдЧреЗ:

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдШреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдПрди -1 рдереА, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрди / 2 - рдкрд╣рд▓рд╛ рд╕реНрддрд░, рдПрди / 4 - рджреВрд╕рд░рд╛ рд╕реНрддрд░, рдПрди / 8 - рддреАрд╕рд░рд╛, рдЖрджрд┐ред
рдпрд╣ рдЪрд╛рд▓ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдорджрдж рд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИ (рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЗрд╕реЗ рд▓реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛)ред

 //    ,   -   function mergeTreeList(array $treeList) { if (count($treeList) > 2) { return mergeTreeList( ($treeList), _($treeList)); } //... //    } 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкрд╣рд▓реЗ 2x рдореЗрдВ рдореВрд▓ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдмрдбрд╝реЗ рдкреЗрдбрд╝реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдорд╛рд░рд╛ рд╕рдордп рд▓рд╛рдн ~ 10 рдЧреБрдирд╛ (1000 рдкреЗрдбрд╝) рдерд╛ред

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░




рдиреБрдХрд╕рд╛рди рдФрд░ рдмреБрд░рд╛




рдЙрдкрдпреЛрдЧреА рдлрд╛рдЗрд▓реЗрдВ:
рдЯреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ: index.php
CSQL.sql рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MySQL рд╕реНрдХреНрд░рд┐рдкреНрдЯ
PinbaClient.class.php - рдЯреНрд░реА_рдб, рдЯреНрд░реА_рдкрд░реЗрдВрдЯ_рдЖрдИрдбреА рдХреЗ рд╕реНрд╡рдд: рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд┐рдирдмрд╛ рдкрд░ рдПрдХ рдЖрд╡рд░рдг
рдореИрдВ рдУрдирдлреИрдк рдврд╛рдВрдЪреЗ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рджреЗрд╢реА рдкрд┐рдирдмрд╛ рд╕рдорд░реНрдерди рд╣реИ
https://github.com/ents/pinba-php-profiler/ - рдШрд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЬреБрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓реЗрдВ
http://pinba.org/ - рдпрд╣рд╛рдВ рдЖрдк рдкрд┐рдирдмрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


рдЕрд╕реНрд╡реАрдХрд░рдг: рдпрд╣ рд▓реЗрдЦ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдЕрдВрддрд┐рдо рд╕рддреНрдп рдирд╣реАрдВ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдкрд┐рдирдмрд╛ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВ

Source: https://habr.com/ru/post/In142975/


All Articles