
рд╡реНрдпрд╛рдкрдХ рдзрд╛рд░рдгрд╛ рд╣реИ рдХрд┐ "рд╕рд╛рдзрд╛рд░рдг" PHP рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди "рджреЗрдЦрднрд╛рд▓" рдФрд░ "рдкрддрд╛" рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рд╣реИрдВред рдореИрдВ рдЪрд░ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдХреЗ рдХреБрдЫ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рд╕рд╛рде рд╣реА рдкреАрдПрдЪрдкреА рдЖрдВрддрд░рд┐рдХ рдЕрдиреБрдХреВрд▓рди рдХреЗ рджрд┐рд▓рдЪрд╕реНрдк "рдиреБрдХрд╕рд╛рди" рднреАред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреБрдХреВрд▓рди рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ "рдЕрдиреБрдХреВрд▓рди" рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк "рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рд░реЗрдХ" рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА
рдЫреЛрдЯрд╛ рд╢реИрдХреНрд╖рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо
PHP рдореЗрдВ рдПрдХ рдЪрд░, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдерд╛, рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ: "
рдирд╛рдо ", рдЬреЛ hash_table symbol_table рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ "
рдорд╛рди ", рдЬреЛ рдЬрд╝рд╡рд▓ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ рддрдВрддреНрд░ рдЖрдкрдХреЛ рдХрдИ рдЪрд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕рдорд╛рди рдореВрд▓реНрдп рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдпрд╣ рдмрд╛рдж рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдмрд╕реЗ рдЖрдо рдХреЛрдб рддрддреНрд╡, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд┐рдВрджреБ рд╣реИрдВ:
- рдЪрд░ (рд╕рдВрдЦреНрдпрд╛, рд░реЗрдЦрд╛рдПрдВ рдЖрджрд┐) рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдФрд░ рд╡рд┐рд▓реЛрдкрди,
- рдПрд░реЗрдЬрд╝ рдФрд░ рдЙрдирдХреЗ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг (рдлрд╝реЙрд░реЗрд╕реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛),
- рдХрд╛рд░реНрдпреЛрдВ / рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдФрд░ рд╡рд╛рдкрд╕реАред
рдпрд╣ рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЗрди рдкрд╣рд▓реБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╡рд░рдг рд╣реЛрдЧрд╛ред рдпрд╣ рдХрд╛рдлреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛрдЧрд╛, рдЬрд╛рд╣рд┐рд░ рд╣реИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рдеред
рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг
рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдореЗрдореЛрд░реА рдЦрдкрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рдХрд╛ рдПрдХ рдореВрд▓ рдЙрджрд╛рд╣рд░рдгред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреБрдЫ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ (
func.php рдлрд╝рд╛рдЗрд▓) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<? php
рдлрд╝рдВрдХреНрд╢рди рдореЗрдореЛрд░реАрдпреВрдЬреЗрдЬ ( $ рдЙрдкрдпреЛрдЧ , $ base_memory_usage ) {
рдкреНрд░рд┐рдВрдЯрдл ( "рдмрд╛рдЗрдЯреНрд╕ рднрд┐рдиреНрди: % d \ n" , $ рдЙрдкрдпреЛрдЧ - $ base_memory_usage ) ;
}
рдлрдВрдХреНрд╢рди someBigValue ( ) {
рд╡рд╛рдкрд╕реА str_repeat ( 'рдХреБрдЫ рдмрдбрд╝реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ' , 1024 ) ;
}
?>
рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЦрдкрдд рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдПрдХ рд╕рд░рд▓ рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг:
<? php
рд╢рд╛рдорд┐рд▓ ( 'func.php' ) ;
рдЧреВрдВрдЬ "рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдгред \ n \ n" ;
$ base_memory_usage = memory_get_usage ( ) ;
$ base_memory_usage = memory_get_usage ( ) ;
рдЗрдХреЛ "рд╕реНрдЯрд╛рд░реНрдЯ \ n" ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
$ a = someBigValue ( ) ;
рдЧреВрдВрдЬ "рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдмрд╕реЗ \ n" ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
unset ( $ a ) ;
рдЧреВрдВрдЬ "рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдкрд░реЗрд╢рд╛рди \ n" ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
?>
рдиреЛрдЯ:
рдирд┐рд╕реНрд╕рдВрджреЗрд╣, рдХреЛрдб рдХреЛ рд╕рдВрдЪрд╛рд▓рди рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрдореЛрд░реА рдЦрдкрдд рдХреА рджреГрд╢реНрдпрддрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рджреГрд╢реНрдп рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдХреЛрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ:
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдгред
рдкреНрд░рд╛рд░рдВрдн
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдмрд╕реЗ
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 15448
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдкрд░реЗрд╢рд╛рди
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг, рд▓реЗрдХрд┐рди
рдкрд░реЗрд╢рд╛рди ($ a) рдХреЗ рдмрдЬрд╛рдп
рд╣рдо $ a = null рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
; :
рдкреНрд░рд╛рд░рдВрдн
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдмрд╕реЗ
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 15448
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВ
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 76
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╖реНрдЯ рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ред рдЗрд╕рдХреЗ рддрд╣рдд рдПрдХ рдФрд░ 76 рдмрд╛рдЗрдЯреНрд╕ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рд╣реИрдВред
рдпрд╣ рдХрд╛рдлреА рд╕рднреНрдп рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдмреВрд▓рд┐рдпрди, рдкреВрд░реНрдгрд╛рдВрдХ, рдлреНрд▓реЛрдЯ рдЬреИрд╕реЗ рдЪрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░рд╛рд╢рд┐ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣
рдЪрд░ рдорд╛рди рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рд╕реНрдореГрддрд┐ рдЦрдкрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ (рдореВрд▓реНрдп рдФрд░ рдЪрд░ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЬрд╝рд╡рд▓ рдХрдВрдЯреЗрдирд░)ред
рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓
рд╢реВрдиреНрдп рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
$ a = 10000; рд╕реНрдореГрддрд┐ рдЦрдкрдд рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рджреЗрдЧрд╛ред
PHP рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╣рддрд╛ рд╣реИ рдХрд┐
рдЕрд╢рдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдЪрд░ рдФрд░ рдЙрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛ , рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ
рдПрдХ рдмрдЧ (рдкреНрд░рд▓реЗрдЦрди) рд╣реИ ред
рдпрджрд┐
рдЕрд╢рд╛рдВрдд () рд╕рдВрднрд╡
рд╣реИ рддреЛ
рдЕрд╢рдХреНрдд рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ?
рдПрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдПрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╣реИ, (KO рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж), рдЕрд░реНрдерд╛рддреН, рдПрдХ рдЪрд░ рдХрд╛ рдореВрд▓реНрдп рдмрджрд▓рддрд╛ рд╣реИ, рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рдПрдХ рдирдП рдореВрд▓реНрдп рдХреЛ рдХрдо рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рддреБрд░рдВрдд рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдпрджреНрдпрдкрд┐ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо)ред
unset () рдмрджрд▓реЗ рдореЗрдВ рдЪрд░ рдирд╛рдо рдФрд░ рдЙрд╕рдХреЗ рдорд╛рди рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░рддрд╛ рд╣реИред
рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐
рдкрд░реЗрд╢рд╛рди () рдФрд░
рдЕрд╢рдХреНрдд рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдЪрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
Unset () рдХреЗрд╡рд▓ рд▓рд┐рдВрдХ
рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛, рдЬрдмрдХрд┐
null рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдЪрд░ рдирд╛рдореЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдорд╛рди рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдЪрд░
рд╢реВрдиреНрдп рдорд╛рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВрдЧреЗред
рдиреЛрдЯ:
рдПрдХ рдЧрд▓рдд рдзрд╛рд░рдгрд╛ рд╣реИ рдХрд┐ рдЕрдирд╕реЗрдЯ () рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред unset () рдПрдХ рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдЕрдЧрд░ ), рдЬреИрд╕рд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ , рддрджрдиреБрд╕рд╛рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЪрд░ рдХреЗ рдореВрд▓реНрдп рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:$ unset_func_name = 'unset' ;
$ unset_func_name ( $ some_var ) ;
рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА (рдКрдкрд░ рдЙрджрд╛рд╣рд░рдг рдмрджрд▓рддреЗ рд╕рдордп):
$ = рдПрдХ рд╕рд░рдгреА ();164 рдмрд╛рдЗрдЯреНрд╕ рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ, unset ($ a) рд╕рдм рдХреБрдЫ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред
рдХрдХреНрд╖рд╛ рдП {}
$ a = рдирдпрд╛ A ();
184 рдмрд╛рдЗрдЯ рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ, рд╕рдм рдХреБрдЫ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ ($ a)ред
$ a = рдирдпрд╛ stdClass ();рдпрд╣ 272 рдмрд╛рдЗрдЯреНрд╕ рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдкрд░реЗрд╢рд╛рди рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж ($ a) 88 рдмрд╛рдЗрдЯреНрд╕ "рд▓реАрдХ" рд╣реЛрдЧрд╛ (рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ рд╡реЗ рдХрд╣рд╛рдВ рдФрд░ рдХреНрдпреЛрдВ рд▓реАрдХ рд╣реБрдП)ред
рдЕрдм рддрдХ, рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд╕реНрдореГрддрд┐ рдХреА рдЦрдкрдд рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЬрдм рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред
рд╕рд░рдгрд┐рдпреЛрдВ
PHP рдореЗрдВ Arrays рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА "рдЦрд╛рддреА рд╣реИ", рдФрд░ рдпрд╣ рдЙрдирдореЗрдВ рд╣реИ рдХрд┐ рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, PHP рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрдкрдирд╛ "рдЕрдиреБрдХреВрд▓рди рдЖрдХрд░реНрд╖рдг" рд╣реИ рдФрд░ рд╕реНрдореГрддрд┐ рдЦрдкрдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЙрди рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред
рдХрдкрдЯреА рдЙрджрд╛рд╣рд░рдг рез
< ? php
рд╢рд╛рдорд┐рд▓ ( 'func.php' ) ;
рдЧреВрдВрдЬ "рд╕рд░рдгреА рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдгред" ;
$ base_memory_usage = memory_get_usage ( ) ;
$ base_memory_usage = memory_get_usage ( ) ;
рдЧреВрдВрдЬ 'рдЖрдзрд╛рд░ рдЙрдкрдпреЛрдЧред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
$ a = array ( someBigValue ( ) , someBigValue ( ) , someBigValue ( ) , someBigValue ( ) ) ;
рдЧреВрдВрдЬ 'рдПрд░реЗ рд╕реЗрдЯ рд╣реИред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
foreach ( $ a $ k => $ v ) {
$ a [ $ k ] = someBigValue ( ) ;
unset ( $ k, $ v ) ;
рдЧреВрдВрдЬ 'рдкреВрд░реНрд╡ рдЪрдХреНрд░ рдореЗрдВред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
}
рдЧреВрдВрдЬ 'рдЖрдЧреЗ рдХреЗ рдмрд╛рдж рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
unset ( $ a ) ;
рдЧреВрдВрдЬ 'рдЕрд░реНрд░реЗ рдкрд░реЗрд╢рд╛рдиред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
? >
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ $ a рд╕рд░рдгреА рдХреА рдореЗрдореЛрд░реА рдЦрдкрдд рдирд╣реАрдВ рдмрджрд▓реЗрдЧреА (рдЪрд░ $ k рдФрд░ $ v рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛), рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп PHP рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред
рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦреЗрдВ:
рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдмреЗрдЬрд╝ рдЙрдкрдпреЛрдЧред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдПрд░реЗ рд╕реЗрдЯ рд╣реИред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 77632
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 93032
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 108432
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 123832
FOREACH рдХреЗ рдареАрдХ рдмрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
рдЕрд░реНрд░реЗ рдкрд░реЗрд╢рд╛рдиред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдлреЛрд░рдЪ рд▓реВрдк рдХреЗ рдЕрдВрддрд┐рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд░рдгреА рджреНрд╡рд╛рд░рд╛ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рджреЛрдЧреБрдиреА рд╣реЛ рдЧрдИ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреЛрдб рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЪрдХреНрд░ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рд╕реНрдореГрддрд┐ рдЦрдкрдд рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдореВрд▓реНрдп рдкрд░ рд▓реМрдЯ рдЖрдИред рдЪрдорддреНрдХрд╛рд░ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд▓реВрдк рдореЗрдВ рд╕рд░рдгреА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЬрдм рд▓реВрдк рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдореВрд▓ рд╕рд░рдгреА рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕рд░рдгреА рд╕рдВрд░рдЪрдирд╛ рдХреА рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ (рд▓реЗрдХрд┐рди рдореВрд▓реНрдпреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ), рдЬреЛ рдЪрдХреНрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрджрд┐ рдЖрдк рдореВрд▓ рд╕рд░рдгреА рдореЗрдВ рдирдП рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рддреБрд░рдВрдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рдПрдЧреА, рдЬреЛ рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред
рдЗрд╕ рдХреНрд╖рдг рдХреЛ рдпрд╛рдж рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЪрдХреНрд░ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореЗрдореЛрд░реА рдЦрдкрдд рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд▓рд╛рддреА рд╣реИред
рдиреЛрдЯ:
рд▓реВрдк рдХреЗ рдЕрдВрджрд░, $ [[$ k] рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЙрд╕ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрднреА рднреА рдореВрд▓ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ рдпрджрд┐ рдЖрдкрдиреЗ $ v рдХрд╛ рдорд╛рди рдирд╣реАрдВ рдмрдЪрд╛рдпрд╛ рд╣реИред рдмрд╛рд░-рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП $ [$ k] рдПрдХ рдирдП рдореВрд▓реНрдп рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛редрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рдмрд╛рдбрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛рд╡ (рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ):
рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдирдП "рдЕрд╕реНрдерд╛рдпреА рд╕рд░рдгреА" рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХрд╛ рдЖрд╡рдВрдЯрди рд╕рд░рдгреА рдХреА рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордп рдореЗрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд╣реИ (рд▓реЗрдХрд┐рди рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде), рддреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдирдХрд▓ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдмрд╛рд░ рдХреА рдореЗрдореЛрд░реА рдЦрдкрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдЧреАред
рдХрдкрдЯреА рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ 2
рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред
рдЧреВрдВрдЬ 'рдПрд░реЗ рд╕реЗрдЯ рд╣реИред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
$ b = & $ a ; // рдЗрд╕реЗ рдЬреЛрдбрд╝реЗрдВ
foreach ( $ a $ k => $ v ) {
$ a [ $ k ] = someBigValue ( ) ;
unset ( $ k, $ v ) ;
рдЧреВрдВрдЬ 'рдкреВрд░реНрд╡ рдЪрдХреНрд░ рдореЗрдВред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
}
рдЕрдирд╕реЗрдЯ ( $ b ) ; // рдФрд░ рдпрд╣
рдЧреВрдВрдЬ 'рдЖрдЧреЗ рдХреЗ рдмрд╛рдж рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
рд╣рдордиреЗ рд╕реНрд╡рдпрдВ рд╣реА рд▓реВрдк рдХреЛрдб рдирд╣реАрдВ рдмрджрд▓рд╛, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣рдордиреЗ рдмрджрд▓реА, рд╡рд╣ рдереА рд╕рдВрджрд░реНрдн рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрд░реЛрдд рд╕рд░рдгреА рдореЗрдВ рдмрдврд╝рд╛рдирд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реВрдк рдСрдкрд░реЗрд╢рди рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛:
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдПрд░реЗ рд╕реЗрдЯ рд╣реИред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61988
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61988
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61988
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61988
FOREACH рдХреЗ рдареАрдХ рдмрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
рдЕрд░реНрд░реЗ рдкрд░реЗрд╢рд╛рдиред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдПрдХ рдЫреЛрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди: (61988 - 61940 = 48 рдмрд╛рдЗрдЯреНрд╕ рд╕рдВрджрд░реНрдн рдЪрд░ $ b рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)редрдЕрдиреНрдпрдерд╛, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдРрд░реЗ рдореЗрдВ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрджрд░реНрдн рд╣реИрдВ, рддреЛ рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ 1 рд╕реЗ рдЕрдиреБрдХреВрд▓рди рдЙрд╕ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдореВрд▓ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рд╣рдо рд▓реВрдк рдХреЗ рд▓рд┐рдП $ b рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рд▓реВрдк рдореЗрдВ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдореВрд▓реНрдп рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:
рдЧреВрдВрдЬ 'рдПрд░реЗ рд╕реЗрдЯ рд╣реИред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
foreach ( $ a $ k => & $ v ) {
$ a [ $ k ] = someBigValue ( ) ; // рдпрд╛ $ v = someBigValue ();
unset ( $ k, $ v ) ;
рдЧреВрдВрдЬ 'рдкреВрд░реНрд╡ рдЪрдХреНрд░ рдореЗрдВред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
}
рдЧреВрдВрдЬ 'рдЖрдЧреЗ рдХреЗ рдмрд╛рдж рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
рдкрд░рд┐рдгрд╛рдо:
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдПрд░реЗ рд╕реЗрдЯ рд╣реИред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
FOREACH рдЪрдХреНрд░ рдореЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
FOREACH рдХреЗ рдареАрдХ рдмрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
рдЕрд░реНрд░реЗ рдкрд░реЗрд╢рд╛рдиред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ $ v рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЛ рдЬреЛрдбрд╝рдирд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрд░реЛрдд рд╕рд░рдгреА рдХреА рд╕рдВрджрд░реНрдн рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ "рдЕрдиреБрдХреВрд▓рди" рдХреЛ рднреА рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдпрд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг
"рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ" рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди (рдпрд╛ рдЙрдирд╕реЗ рд╡рд╛рдкрд╕реА) рдХреЛ рдХреБрдЫ рдмрд╣реБрдд рдмрдбрд╝реЗ рдореВрд▓реНрдп рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдЖрдорддреМрд░ рдкрд░ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ / рд╡рд╛рдкрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, PHP рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╣рддрд╛ рд╣реИ:
рдкреНрд░рджрд░реНрд╢рди рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рд░рд┐рдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред PHP рдХрд╛ рдореВрд▓ рдЕрдиреБрдХреВрд▓рди рд╕реНрд╡рдпрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ ред
рдЖрдЗрдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдЕрдиреБрдХреВрд▓рди" рд╣реИред
рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЕрдм рддрдХ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛):
...
$ a = someBigValue ( ) ;
$ рдмреА = $ рдП ;
рдЧреВрдВрдЬ "рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдмрд╕ рдЧрдП" ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
unset ( $ a, $ b ) ;
...
"рдкреНрд░рддреНрдпрдХреНрд╖ рддрд░реНрдХ" рджреНрд╡рд╛рд░рд╛, рдЪрд░ рдХреЗ рдорд╛рди рдХреЗ рд▓рд┐рдП рджреЛ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, PHP рдЗрд╕ рдмрд┐рдВрджреБ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИ:
рдкреНрд░рд╛рд░рдВрдн
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдмрд╕реЗ
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 15496
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдкрд░реЗрд╢рд╛рди
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЪрд░ $ a рдкрд░ 15448 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдХрдмреНрдЬрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╢реЗрд╖ 48 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдЪрд░ $ b рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдирдХреЗ рдмреАрдЪ рдХреЛрдИ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдореЗрдореЛрд░реА рдЦрдкрдд рддрдм рддрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рд░рд╣рддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдЪрд░ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреЗ, рдпрд╛ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рд╣рдо рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ:
$ a = someBigValue ( ) ;
$ рдмреА = $ рдП ;
$ b = рд╕реНрдЯреНрд░реЛрдХ ( $ b ) ;
рдЧреВрдВрдЬ "рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдмрд╕ рдЧрдП" ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
unset ( $ a, $ b ) ;
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдирд┐рд╖реНрдХрд░реНрд╖ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдмрд╕реЗ
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 30896
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдкрд░реЗрд╢рд╛рди
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдЪрд░ $ b рдХреЗ рдореВрд▓реНрдп рдХреЛ "рдЫреВрдиреЗ" рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдм рдЕрдкрдиреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреА рд╣реИред рдпрджрд┐ рд╣рдо $ a рдХреЗ рдореВрд▓реНрдп рдХреЛ "рд╕реНрдкрд░реНрд╢" рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рднреА рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ рдЕрдиреБрдХреВрд▓рди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИ, рдЬреЛ рд╕рд░рдгреА рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореВрд▓реНрдп рднреА рд╣реИрдВред
рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
$ a = array ( someBigValue ( ) , someBigValue ( ) ) ; // 31052 рдмрд╛рдЗрдЯреНрд╕
$ рдмреА = $ рдП ; // + 48 рдмрд╛рдЗрдЯреНрд╕ = 31100 рдмрд╛рдЗрдЯреНрд╕
$ b [ 0 ] = someBigValue ( ) ;
рдЧреВрдВрдЬ "рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдмрд╕ рдЧрдП" ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
unset ( $ a, $ b ) ;
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рджреЗрдЧрд╛:
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдмрд╕реЗ
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 46704
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдкрд░реЗрд╢рд╛рди
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдпрд╣реА рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдирдИ рдореЗрдореЛрд░реА (15k + рдмрд╛рдЗрдЯреНрд╕) рдХреЛ рд╕рд░рдгреА рдХреЗ рд╢реВрдиреНрдп рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдореВрд▓реНрдп рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдкреВрд░реЗ $ b рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред $ B [1] рдХрд╛ рдореВрд▓реНрдп рдЕрднреА рднреА $ [1] рдХреЗ рд▓рд┐рдП "рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрдмрдВрдзрд┐рдд" рд╣реИред
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЕрдВрджрд░ / рдмрд╛рд╣рд░ "рдЕрдиреБрдХреВрд▓рд┐рдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ / рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рджрд┐рдП рдЧрдП рдорд╛рди рдХреЛ "рд╕реНрдкрд░реНрд╢" рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╕реНрдореГрддрд┐ рдХреЛ рдХреЗрд╡рд▓ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░ рдирд╛рдо рдХреЗ рддрд╣рдд рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред рдпрджрд┐ рдЖрдк "рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ" рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдорд╛рди рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореВрд▓реНрдп рдХреА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреВрд░реНрдг рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред
рдЗрд╕ рддрд░рд╣, PHP рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдкрд╛рд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╕рдВрджрд░реНрдн рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдХреЗрд╡рд▓ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдорд╣рддреНрд╡ рдХрд╛ рд╣реИ рдЕрдЧрд░ рдореВрд▓ рдореВрд▓реНрдп рдХреЛ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдб:
< ? php
рд╢рд╛рдорд┐рд▓ ( 'func.php' ) ;
рд╕рдорд╛рд░реЛрд╣ testUsageInside ( $ big_value, $ base_memory_usage ) {
рдЧреВрдВрдЬ 'рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рддреЛ $ big_value рдирд╣реАрдВ рдмрджрд▓рд╛ред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
$ big_value [ 0 ] = someBigValue ( ) ;
рдЧреВрдВрдЬ 'рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рддрдм $ big_value [0] рдмрджрд▓ рдЧрдпрд╛ред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
$ big_value [ 1 ] = someBigValue ( ) ;
рдЧреВрдВрдЬ 'рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рддрдм рднреА $ big_value [1] рдмрджрд▓ рдЧрдпрд╛ред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
}
рдЧреВрдВрдЬ "рд╕рд░рдгреА рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдгред" ;
$ base_memory_usage = memory_get_usage ( ) ;
$ base_memory_usage = memory_get_usage ( ) ;
рдЧреВрдВрдЬ 'рдЖрдзрд╛рд░ рдЙрдкрдпреЛрдЧред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
$ a = array ( someBigValue ( ) , someBigValue ( ) , someBigValue ( ) , someBigValue ( ) ) ;
рдЧреВрдВрдЬ 'рдПрд░реЗ рд╕реЗрдЯ рд╣реИред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
testUsageInside ( $ a, $ base_memory_usage ) ;
рдЧреВрдВрдЬ 'рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдареАрдХ рдмрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
unset ( $ a ) ;
рдЧреВрдВрдЬ 'рдЕрд░реНрд░реЗ рдкрд░реЗрд╢рд╛рдиред' ред PHP_EOL ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
? >
рдирд┐рд╖реНрдХрд░реНрд╖:
рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдгред
рдЖрдзрд╛рд░ рдЙрдкрдпреЛрдЧред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдПрд░реЗ рд╕реЗрдЯ рд╣реИред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рддрдм $ big_value рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рддрдм $ big_value [0] рдмрджрд▓ рдЧрдпрд╛ред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 77632
рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рднреА $ big_value [1] рдмрджрд▓ рдЧрдпрд╛ред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 93032
рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдмрд╛рдж рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
рдЕрд░реНрд░реЗ рдкрд░реЗрд╢рд╛рдиред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 0
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рд░рдгреА рдХреА рдПрдХ рдкреНрд░рддрд┐ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рдереА, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдореВрд▓реНрдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рд╕рд░рдгреА рдХрд╛ рдПрдХ рдЖрдВрд╢рд┐рдХ рд╕рдВрд╢реЛрдзрди рдкреВрд░реНрдг рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдирдП рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдереАред
рдХреЗрд╡рд▓ рд╕реВрдЪрдирд╛ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрди рджреЛ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ:
рдПрд░реЗ рд╕реЗрдЯ рд╣реИред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рддрдм $ big_value рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ред
рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрддрд░: 61940
рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдореЗрдВ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рдереА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЪрд░ $ big_value рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдерд╛ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рда рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рднреА, рджреБрднрд╛рд╖рд┐рдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ (рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рджреБрднрд╛рд╖рд┐рдпрд╛ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдФрд░ рдЬрдм рд╕реЗ "рдирдХрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕реНрдерд╛рдирд╛рдВрддрд░рдг" рд╣реЛрддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рдЪрд░ рдирд╛рдо $ big_value рдХреЗрд╡рд▓ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ "рдХрдиреЗрдХреНрдЯ" рдмрдбрд╝реЗ рд╕рд░рдгреА $ a рдХреЗ рд▓рд┐рдП рдерд╛ред рдирддреАрдЬрддрди, рдорд╛рди рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд╛рдЗрдЯ рдЦрд░реНрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рдлрд╝рдВрдХреНрд╢рди "рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ" рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдиреЛрдЯ:
PHP5 (PHP4 рдХреЗ рд╡рд┐рдкрд░реАрдд), рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдЕрд╡рд░ рд▓рд┐рдВрдХ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЛ рджреЗрдЦреЗрдВредрд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд┐рд╖реНрдХрд░реНрд╖
рдирд┐рд╕реНрд╕рдВрджреЗрд╣, PHP рдореЗрдВ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ "рдмрд╛рд▓реНрдЯреА рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ" рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рдмрд╕реЗ рдЖрдо рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдпрд╣ рд╕реЛрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдЦрдкрдд рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рд┐рд░рджрд░реНрдж рд╕реЗ рдЦреБрдж рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рдХреЛрдб рдЪреБрдирдирд╛ рд╣реИред
рдЕрд▓рдЧ-рдЕрд▓рдЧ, рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕реНрдореГрддрд┐ рдХреЗ рдЦрд░реНрдЪ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рддрдВрддреНрд░ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░рдирд╛ рд╕рд╛рд░реНрдердХ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрднрд╡ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдкреНрд░рдЪреБрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг, рдЗрд╕ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╢рд╛рдпрдж рдХрд┐рд╕реА рджрд┐рдиред
рдкреБрдирд╢реНрдЪ: рдЗрд╕реЗ рдХрдИ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ "рдПрдХ рд╕рд╛рде" рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рд╡реЗ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдВрдЧреЗред PHP 5.3.2 (Ubuntu 32bit) рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдмрд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдорд╛рди рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдХрдИ рдФрд░ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЗрдВ, рд▓реЗрдХрд┐рди рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ:
nikic.github.com/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.htmlnikic.github.com/2011/11/11/PHP-Internals-When-does-foreach-copy.htmlblog.golemon.com/2007/01/youre-being-lied-to.htmlhengrui-li.blogspot.com/2011/08/php-copy-on-write-how-php-manages.htmlsldn.softlayer.com/blog/dmcaloon/PHP-Memory-Management-Foreachblog.preinheimer.com/index.php?/archives/354-Memory-usage-in-PHP.htmlderickrethans.nl/talks/phparch-php-variables-article.pdfрдпреБрдкреАрдбреАрд▓реЗрдЦ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдерд╛ред
рдпрджрд┐ рдХреЛрдИ рдЪрд░ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд▓рд┐рдВрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬрдм рдЗрд╕реЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рддреБрд░рдВрдд рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рдд рдХреЙрдкреА-рдСрди-рд░рд╛рдЗрдЯ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
< ? php
рд╢рд╛рдорд┐рд▓ ( 'func.php' ) ;
рд╕рдорд╛рд░реЛрд╣ testFunc ( $ a, $ base_memory_usage ) {
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ;
}
$ рдмреЗрд╕_рдореЗрдореЛрд░реА_рд╕рд╛рдЬ = 0 ;
$ base_memory_usage = memory_get_usage ( ) ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ; // 0 рдмрд╛рдЗрдЯреНрд╕
$ a = someBigValue ( ) ;
$ b = & $ a ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ; // 15496 рдмрд╛рдЗрдЯреНрд╕
testFunc ( $ a, $ base_memory_usage ) ; // 30896 рдмрд╛рдЗрдЯреНрд╕
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ; // 15496 рдмрд╛рдЗрдЯреНрд╕
unset ( $ a, $ b ) ;
memoryUsage ( memory_get_usage ( ) , $ base_memory_usage ) ; // 0 рдмрд╛рдЗрдЯреНрд╕
? >