рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рдВрдЧрдарди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рдП / рдмреА) рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдкрд░реАрдХреНрд╖рдг

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

рдХрд╛рд░реНрдп рдХрд╛ рд▓рдХреНрд╖реНрдп рд╕рдВрд╕рд╛рдзрди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдордЧреНрд░реА рд╡рд┐рдХрд▓реНрдкреЛрдВ (рджреЛрдиреЛрдВ рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓) рдХреЗ рдПрдХ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рдирд╛ рдерд╛ред рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдХреБрдЫ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рдж, рд╣рдо рдХрдИ рд╡рд┐рдХрд▓реНрдк рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ - рдпреЗ GWO рдереЗ (рдЕрдм рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, GA рдореЗрдВ рдПрдХреАрдХреГрдд), nginx рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рднреА рдХрдИ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рдерд╛: рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдХреЛ рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рдирд╛, рдЬреЛ рдЬрдЯрд┐рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ nginx рд╣рд░ рдЬрдЧрд╣ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рднреА рд╣реЛрддреА рд╣реИ рддрдбрд╝рдХ-рднрдбрд╝рдХ рд╡рд╛рд▓рд╛ рддрд░реНрдХред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреА рд╡рд┐рдХрд▓реНрдк рдмрд╛рдЗрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЬреЛ рдХрд┐ рдирдЧреАрдиреЗрдХреНрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдерд╛ред
рдореБрдЭреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреБрдХреНрддрд┐рдпрд╛рдВ рднреА рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдИрдВ (рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдЕрдВрддрд┐рдо рдЕрдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд╢реЗрд╖), рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреБрдВрдЬреА рд╕реЗ рдЪреЗрдХрд╕рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ - рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд▓рд╛рдн рдмрд┐рд▓реНрдХреБрд▓ рдХрд┐рд╕реА рдЕрд▓реНрдлрд╝рд╛рдиреНрдпреВрдореЗрд░рд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ред рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдгред рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд╕рдВрдж рдореБрд░рдореБрд░реИрд╢ 2 рдкрд░ рдЧрд┐рд░ рдЧрдИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд╡рд┐рддрд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░, рдореИрдВ рдХреНрдпрд╛ рдЫрд┐рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдВрдЧреЗрдХреНрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЬрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╣ php рдореЗрдВ рд▓рд╛рдЧреВ рд╣реИ, рдореИрдВ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдЕрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрдкреНрд▓рд┐рдЯрдЯреЗрд╕реНрдЯрдореЙрдбрд▓ рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЗрд╕реЗ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
class SplitTestModel { public static function getInstance($key = ''){...} private function __construct( $key ){...} public function getSplitVariantByExperiment( $experimentName ){...} } 

рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рджреА рд╣реИ, рдЬреЛ, рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдкреНрд░рдкрддреНрд░ рдХрд╛ рдПрдХ рд╕рд░рдгреА рд╣реИ:
 array( 'Experiment1' => array( 'Variant1' => 50, 'Variant2' => 50 ), 'Experiment2' => array( 'Variant1' => 15, 'Variant2' => 35, 'Variant3' => 12, 'Variant4' => * ) ); 

рдЬрд╣рд╛рдБ рд╢реАрд░реНрд╖-рд╕реНрддрд░ рдХреА рдХреБрдВрдЬреА рдкреНрд░рдпреЛрдЧ рдХреЗ рдирд╛рдо рд╣реИрдВ, рдиреЗрд╕реНрдЯреЗрдб рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдирд╛рдо рд╣реИрдВ, рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рди рдЫрд╛рдкреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рд╣реИрдВ, '*' рдХрд╛ рдЕрд░реНрде рд╣реИ рд╢реЗрд╖ рд╕рднреА рдкреНрд░рддрд┐рд╢рддред
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореБрд░рдореБрд░реИрд╢ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдВрдЬреА рдХреЛ рд╣реИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рдкреНрд░рдпреЛрдЧ рдореЗрдВ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣реИрд╢ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╣реИрд╢ рдорд╛рди рдХреЗ 0 рд╕реЗ 50% рддрдХ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ 'рд╡реЗрд░рд┐рдПрдВрдЯ 1' рдХреЗ рдмрд░рд╛рдмрд░ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рдореВрд▓реНрдп рдХреЗ 50% рд╕реЗ рдХреНрд░рдорд╢рдГ 100% - рдорд╛рди 'рд╡реЗрд░рд┐рдПрдВрдЯ 2'ред
рд╡рд┐рдзрд┐ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рдЕрдм, рдХреЛрдб рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдкрд░, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд┐рд╕реА рднреА рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рднрд┐рдиреНрди рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░, рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкреГрд╖реНрда рдХреЗ рдХрд┐рд╕реА рднреА рд╣рд┐рд╕реНрд╕реЗ рдХреА рдпрд╣ рдпрд╛ рдЙрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
 $variant1 = SplitTestModel::getInstance($user_id)->getSplitVariantByExperiment('experiment1'); $variant2 = SplitTestModel::getInstance($remote_addr)->getSplitVariantByExperiment('experiment2'); 

рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ!
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдореИрдВ рдЖрдкрд╕реЗ рд╕рдЦреНрддреА рд╕реЗ рдиреНрдпрд╛рдп рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВ рдЦрд╝реБрд╢реА рд╕реЗ рдХреНрд▓рд╛рд╕ рдХрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб рднреЗрдЬреВрдВрдЧрд╛ред

рдпреБрдкреАрдбреА:
рдЧрд┐рддреБрдм рдкрд░ рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕рдВрджрд░реНрдн


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


All Articles