Zend Technologiesã®Dmitry StogovãHighLoad ++ã§è¬æŒããçç£æ§ãåäžããŸããã ãã³ãŒãïŒPHPã®å éšæ§é ãããŒãžã§ã³7.0ã®äžå¿ã«ããã¢ã€ãã¢ãæåã決å®ããåºæ¬çãªããŒã¿æ§é ãšã¢ã«ãŽãªãºã ã®å€æŽã«ã€ããŠã
å 責äºé ïŒ2019幎3æçŸåšã ãµã€ãã®80ïŒ ã¯ PHPã§å®è¡ãã ããµã€ãã® 70ïŒ ã¯ PHP 5㧠å®è¡ãããŠã ãŸããã2019幎1æ1æ¥ä»¥éã ãã®ããŒãžã§ã³ã¯ãµããŒããããŠããŸãã ã PHP 5ãš7ã®éã§çç£æ§ã2åã«è·³ãäžãã£ãããã®ååã«é¢ãã2016幎ã®Dmitryã®ã¬ããŒãã¯ã2019幎3æã«ãé¢é£ããŠããŸãã
ã¹ããŒã«ãŒã«ã€ããŠïŒDmitry Stogovã¯80幎代ã«ããã°ã©ãã³ã°ãéå§ããŸããããElectronics B3-34ããBasicãã¢ã»ã³ãã©ãŒã§ãã 2002幎ã«Dmitryã¯PHPã«ç²Ÿéããããã«æ¹åã«åãçµã¿å§ããŸããã圌ã¯PHPçšTurck MMCacheãéçºããPHPNGãããžã§ã¯ããäž»å°ããPHPçšJITã®äœæ¥ã§éèŠãªåœ¹å²ãæãããŸããã éå»14幎éãZend Technologiesã®ããªã³ã·ãã«ãšã³ãžãã¢ã
Zend Technologiesã¯ãPHPãšããã«åºã¥ããåçšãœãªã¥ãŒã·ã§ã³ãéçºããŠããŸãã 1999幎ã«ãã€ã¹ã©ãšã«ã®ããã°ã©ããŒã§ããAndy GutmansãšZeev Suraskiã«ãã£ãŠèšç«ãããŸããã2幎åã«PHP 3ãäœæããŸããã
Zend Technologiesã¯ããã®ããã«PHPã³ã¢ãšã¢ããªã±ãŒã·ã§ã³ãéçºããŸããäœæ¥äžãæ¡åŒµæ©èœãäœæãããã¹ãŠã®ãµãã·ã¹ãã ã«å ¥ããæã«ã¯PHPã«æ¥ç¶ãããŠããªãåçšãããžã§ã¯ãã«åå ããå¿ èŠããããŸããã ããããç§ã«ãšã£ãŠæãèå³æ·±ããããã¯ã¯åžžã«ããã©ãŒãã³ã¹ã§ãã
Zendã«åå ããåããPHPãé«éåããæ¹æ³ãæ¢ãå§ããäŒç€Ÿãšç«¶åããèªåã®ãããžã§ã¯ãã«åãçµã¿ãŸããã ãããžã§ã¯ãã®äœæ¥äžã«ãç§ã¯èšèªãå®å šã«ç解ããäž»æµãããžã§ã¯ãã§ã¯ãªããã¹ã¯ãªããå®è¡ã®ç¹å®ã®åŽé¢ã®ã¿ã«åœ±é¿ãäžããããšãã§ãããã¹ãŠã®æãèå³æ·±ãå¹æçãªãã®ã¯ã«ãŒãã«ã§ã®ã¿äœæã§ããããšã«æ°ä»ããŸãã ã ãã®ç解ãšå¶ç¶ãç§ãZendã«å°ããŸããã
PHPã®æŽå²ãžã®å°ããªäœè«
PHPã¯åãªãããã°ã©ãã³ã°èšèªã§ã¯ãããŸãã ã PHPã¯Personal Home Pageã®ç¥ã§ãå人ã®WebããŒãžãšåçãªWebãµã€ããäœæããããã®ããŒã«ã§ãã èšèªã¯ãã®äž»èŠéšåã®1ã€ã«ãããŸããã PHPã¯å·šå€§ãªé¢æ°ã©ã€ãã©ãªã§ãããããŒã¿ããŒã¹ãXMLããŒãµãŒãžã®ã¢ã¯ã»ã¹ãªã©ãä»ã®ãµãŒãããŒãã£ã©ã€ãã©ãªãšé£æºããããã®å€ãã®æ¡åŒµæ©èœã§ãããããŸããŸãªWebãµãŒããŒãšéä¿¡ããããã®ã¢ãžã¥ãŒã«ã»ããã§ãã
ãã³ããŒã¯ã®ããã°ã©ããŒã ã©ã¹ãã¹ã»ã©ãŒãã«ãã¯1995幎6æã« PHP ãå°å ¥ããŸãã ã åœæãããã¯Perlã§æžãããCGIã¹ã¯ãªããã®åãªãã³ã¬ã¯ã·ã§ã³ã§ãã ã 96幎4æãã©ã¹ãã¹ã¯PHP / FIãå°å ¥ãã6æã«ã¯PHP / FI 2.0ããªãªãŒã¹ãããŸããã ãã®åŸããã®ããŒãžã§ã³ã¯Andy GutmansãšZeev Suraskyã«ãã£ãŠå€§å¹ ã«æ¹èšããã98åç®ã«PHP 3.0ããªãªãŒã¹ãããŸããã 2000幎ãŸã§ã«ãèšèªã¯ãèšèªãšå éšã¢ãŒããã¯ãã£ã®äž¡æ¹ã®èŠ³ç¹ã§ä»æ¥èŠããããããªçš®é¡ã«ãªããŸãã-Zend Engineã«åºã¥ãPHP 4ã
ããŒãžã§ã³4以éãPHPã¯é²åããŠããŸãã ã¿ãŒãã³ã°ãã€ã³ãã¯ã ãªããžã§ã¯ãã¢ãã«ãå®å šã«æŽæ°ããã2004幎ã®PHP 5ã®ãªãªãŒã¹ã§ããã PHPãã¬ãŒã ã¯ãŒã¯ã®æ代ãéããããã©ãŒãã³ã¹ã®åé¡ãæ°ããªã¬ãã«ã«åŒãäžããã®ã¯åœŒå¥³ã§ããã ãããäºæ³ããŠã5.0ã®ãªãªãŒã¹çŽåŸã«Zendã§PHPã®é«éåãæ€èšããçç£æ§ã®åäžã«åãçµã¿å§ããŸããã
åæãã¹ãã§2016幎11æã«ãªãªãŒã¹ãããããŒãžã§ã³7.1 ã¯ã2002ããŒãžã§ã³ããã25åé«éã§ã ã ããŸããŸãªãã©ã³ãã§ã®ããã©ãŒãã³ã¹ã®å€åã®ã°ã©ãã«ãããšãäž»ãªãã¬ãŒã¯ã¹ã«ãŒã¯5.1ããã³7.0ã§èŠãããŸãã

ããŒãžã§ã³5.1ã§ã¯ãããã©ãŒãã³ã¹ã®äœæ¥ãå§ããã°ããã§ããã¹ãŠãåŒãåããŸãã-å€æããŸãããã5.3ã®åŸãå£ã«ã¶ã€ãããã€ã³ã¿ãŒããªã¿ãŒãæ¹åããããšããè©Šã¿ã¯ãã¹ãŠãªããªããŸããã
ããã«ãããããããã©ããæãããèŠã€ããŠãäºæ³ããããã«å€ããååŸããŸãã-ãã¹ãã§ã®ä»¥åã®ããŒãžã§ã³5.6ãšæ¯èŒããŠ2.5åã®å éã ããããæãèå³æ·±ãã®ã¯ãäžå€ã®å®éã®ã¢ããªã±ãŒã·ã§ã³ã§åã2.5åã®å éãåŸãããããšã§ãã ããã¯çŸè±¡ã§ããããã¯ã以åã®ãã¡ã¯ã¿ãŒ2ã5幎éã®10幎éã«ããã£ãŠéçºãããããã§ãã

åæãã¹ãã§ã®5.1ã®å€§ããªãžã£ã³ãã¯ãå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ç®ç«ã¡ãŸããã ãã®çç±ã¯ã䜿çšæ¹æ³ãç°ãªããšãPHPã®ããã©ãŒãã³ã¹ã¯ç°ãªããµãã·ã¹ãã ã«é¢é£ãããã¬ãŒãã«ããã£ãŠããããã§ãã
PHP 7ã®æŽå²ã¯ ã2012幎ã«å§ãŸãã7çªç®ã®ããŒãžã§ã³ã®ãªãªãŒã¹ã§2015幎ã«çµäºãã3幎éã®åæ»ããå§ãŸããŸãã ãããããéèš³ãå°ãæ¹è¯ããŠãçç£æ§ãäžããããšãã§ããªãããšã«æ°ä»ããJITåŽã«åãããŸããã
JITãããŸãã
PHP-5.5ã®JITãããã¿ã€ãã«çŽ2幎ãè²»ãããŸããã æåã«ãéåžžã«åçŽãªã³ãŒããçæããŸãã-æšæºãã³ãã©ãŒã®åŒã³åºãã·ãŒã±ã³ã¹ãã¹ããããããFortã³ãŒãã®ãããªãã®ã ãã®åŸã圌ãã¯ç¬èªã®ã©ã³ã¿ã€ã ã¢ã»ã³ãã©ãŒ ãåé¿çã®ããã®ã€ã³ã©ã€ã³ã®å¥åã®ã³ãŒããæžããŸãããããã®ãããªäœã¬ãã«ã®æé©åã¯ãã¹ãã§ãå®çšçãªå¹æãäžããªãããšã«æ°ä»ããŸããã
次ã«ãéç解æã¡ãœããã䜿çšããŠå€æ°ã¿ã€ããå°åºããããšãèããŸããã çµè«ã«æ°ä»ããåŸã ãã¹ãã§2åã®å éãããã«åããŸããã 奚å±ãããŠã圌ãã¯ã°ããŒãã«ã¬ãžã¹ã¿ã¢ãã±ãŒã¿ãæžã蟌ãããšããŸãããã倱æããŸããã ããªãé«ã¬ãã«ã®è¡šçŸã䜿çšããŸããããã¬ãžã¹ã¿ã®å²ãåœãŠã«äœ¿çšããããšã¯ã»ãšãã©äžå¯èœã§ããã
äœã¬ãã«ã®åé¡ãåé¿ããããã«ãLLVMãè©ŠããŠã¿ãããšã«ãã1幎åŸã«bench.phpã®10åã®å éãåŸãŸããããå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯äœãããŸããã§ããã ããã«ãå®éã®ã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ãã€ã«ã«ã¯æ°åãããããã«ãªããŸãããããšãã°ã Wordpressãžã®æåã®èŠæ±ã«ã¯2åããããé«éåã¯è¡ãããŸããã§ããã ãã¡ãããããã¯å®éã®ç·Žç¿ã«ã¯ãŸã£ããäžé©åã§ããã
é©åãªåäºæž¬ãè¡ããšãé©åãªã³ãŒããå¯èœã«ãªããŸãããå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããŸãæ©èœãããPHPããŒã¿æ§é ã䜿çšãããšãçæãããã³ãŒããéå¹çã«ãªããŸãã
äœãé ããªããŸããïŒ
倱æã®çç±ãåèããPHPãé ãçç±ãããäžåºŠç¢ºèªããããšã«ããŸããã ãã®åçã¯ãWordpressããŒã ããŒãžãžã®ããã€ãã®ãªã¯ãšã¹ãã®ãããã¡ã€ãªã³ã°ã®çµæã瀺ããŠããŸãã

ãã€ãã³ãŒãã®è§£éã«è²»ããããã®ã¯30ïŒ æªæºãã¡ã¢ãªãããŒãžã£ãŒã®ãªãŒããŒãããã¯20ïŒ ãããã·ã¥ããŒãã«ã®åŠçã¯13ïŒ ãæ£èŠè¡šçŸã®åŠçã¯5ïŒ ã§ãã
JITã§åããŠãæåã®30ïŒ ã ããåãé€ããä»ã®ãã¹ãŠã¯ç¡é§ã«ãªããŸããã ã»ãŒãã¹ãŠã®å Žæã§ãã¡ã¢ãªå²ãåœãŠãåç §ã«ãŠã³ããªã©ã®ãªãŒããŒãããã䌎ãæšæºã®PHPããŒã¿æ§é ã䜿çšããããåŸãŸããã§ããã ãã®ç解ã«ãããPHPã®äž»èŠãªããŒã¿æ§é ã眮ãæããå¿ èŠããããšããçµè«ã«è³ããŸããã ãã®åºç€ã®çœ®ãæãã«ããã PHPNGãããžã§ã¯ããå§ãŸããŸããã
Phpng æ°äžä»£
ãã®ãããžã§ã¯ãã¯ãPHPçšã®JITãäœæããããšããŠå€±æããåŸã«éçºãããŸããã äž»ãªç®æšã¯ãæ°ããã¬ãã«ã®çç£æ§ãéæããå°æ¥ã®æ¹åã®åºç€ãç¯ãããšã§ãã
ãã°ããã®éãããã©ãŒãã³ã¹ã®æž¬å®ã«åæãã¹ãã䜿çšããªãããšãçŽæããŸããããããã¯éåžžãããã»ããµãã£ãã·ã¥ã«å®å šã«åãŸãéãããéã®ããŒã¿ã䜿çšããå°ããªã³ã³ãã¥ãŒãã£ã³ã°ããã°ã©ã ã§ãã å¯Ÿç §çã«ãå®éã®ã¢ããªã±ãŒã·ã§ã³ã¯ãµãã·ã¹ãã ã¡ã¢ãªã«é¢é£ãããã¬ãŒãã®åœ±é¿ãåããã¡ã¢ãªããã®1åã®èªã¿åãã«ã¯100ã®èšç®åœä»€ãããããŸãã PHPNGãããžã§ã¯ãã¯ãã¡ã¢ãªã¢ã¯ã»ã¹ãæé©åããããã®äž»èŠãªPHPããŒã¿æ§é ã®ãªãã¡ã¯ã¿ãªã³ã°ã§ã ã ã€ãããŒã·ã§ã³ãªãã100ïŒ PHP 5äºæã
ãããã®æ§é ãå€æŽããæ¹æ³ã¯æ確ã§ããã ãããã PHPèªäœã®ã³ã¢ã¯150,000è¡ã§ãããã»ãŒ3åã®1ãå€æŽããå¿ èŠããããããäŸåããå€æŽã®éã¯èšå€§ã§ããã åºæ¬ãã£ã¹ããªãã¥ãŒã·ã§ã³ã«å«ãŸãã100以äžã®æ¡åŒµæ©èœãããŸããŸãªWebãµãŒããŒçšã®1ããŒã¹ã®ã¢ãžã¥ãŒã«ãè¿œå ãããšããããžã§ã¯ãã®å£®å€§ããå®æã§ããŸãã
ãããžã§ã¯ããçµäºãããã©ãããã確信ã§ããŸããã§ããã ãã®ããã圌ãã¯ç§å¯è£ã«ãããžã§ã¯ããç«ã¡äžããæåã®æ¥œèŠ³çãªçµæãçŸãããšãã«ã®ã¿ãããžã§ã¯ããéããŸããã åã«ã«ãŒãã«ãã³ã³ãã€ã«ããã®ã«2é±éããããŸããã 2é±éåŸãbench.phpãç²åŸããŸããã Wordpressã®åäœãä¿èšŒããããã«1ãæåãè²»ãããŸããã 1ãæåŸããããžã§ã¯ããéããŸãã-2014幎5æã§ããã åœæã Wordpressã®å éã¯30ïŒ ã§ããã ããã¯ãã§ã«å£®å€§ãªã€ãã³ãã®ããã«æããŸããã
PHPNGã¯ããã«é¢å¿ãéãã2014幎8æã«PHP 7ã®å°æ¥ã®åºç€ãšããŠæ¡çšãããŸãã ã ããã¯ç°ãªããããžã§ã¯ãã§ãããç°ãªãç®æšã»ãããæã¡ãçç£æ§ã¯ãã®ãã¡ã®1ã€ã«ãããŸããã§ããã
PHP 7.0
ããŒãžã§ã³çªå·7èªäœã¯çããããã®ã§ããã åã®ããŒãžã§ã³ã¯5çªç®ã§ããã 6ã€ç®ã¯æ°å¹Žåã«éçºãããå®å šã«ãã€ãã£ãUnicodeãµããŒãã«å°å¿µããŠããŸããããéçºã®åæ段éã§è¡ããã決å®ã®å€±æã«ãããã«ãŒãã«ã³ãŒããšåæ¡åŒµæ©èœãé床ã«è€éã«ãªããŸããã æçµçã«ããããžã§ã¯ããåçµããããšã決å®ãããŸããã
ãã®ãšããŸã§ã«ãPHP 6ã«æ§ããããå€ãã®è³æããã§ã«èç©ãããŠããŸãããäŒè°ã§ã®ã¹ããŒããåºçãããæ¬ã§ãã 誰ãæ··ä¹±ãããªãããã«ãPHP 6ãã¹ãããããŠPHP 7ãããžã§ã¯ããåŒã³åºããŸããããã®ããŒãžã§ã³ã¯å¹žéã§ãã-PHP 7ã¯ã»ãŒèšç»ã©ãã2015幎12æã«ãªãªãŒã¹ãããŸããã
ããã©ãŒãã³ã¹ã«å ããŠãPHP 7ã«ã¯é·ãéåŸ ã¡æãŸããŠããã€ãããŒã·ã§ã³ãããã€ãç»å ŽããŸããã
- ãã©ã¡ãŒã¿ãŒã®ã¹ã«ã©ãŒã¿ã€ããšæ»ãå€ãå®çŸ©ããæ©èœã
- ãšã©ãŒã§ã¯ãªãäŸå€-ä»ããããããã£ããããŠåŠçã§ããŸãã
-
Zero-cost assert()
ãå¿åã¯ã©ã¹ãã¯ãªãŒãã³ã°ã®äžæŽåãæ°ããæŒç®åãšé¢æ°ïŒ<=>ã??ïŒãç»å ŽããŸããã
ã€ãããŒã·ã§ã³ã¯è¯ãããå éšã®å€åã«æ»ãã PHP 7ããã©ã£ãéãšããã®éãç§ãã¡ãå°ãå Žæã«ã€ããŠè©±ããŸãããã
zval
ããã¯ãPHPã®åºæ¬çãªããŒã¿æ§é ã§ãã PHPã®å€ãè¡šãããã«äœ¿çšãããŸã ã èšèªã¯åçã«åä»ããããå€æ°ã®åã¯ããã°ã©ã ã®å®è¡äžã«å€æŽã§ãããããIS_NULLãIS_BOOLãIS_LONGãIS_DOUBLEãIS_ARRAYãIS_OBJECTãªã©ã®å€ããšãããšãã§ããåãã£ãŒã«ãïŒzend_ucharåïŒãæ ŒçŽããå¿ èŠããããŸãããŠããªã³ïŒå€ïŒã§è¡šãããå€ãæŽæ°ãå®æ°ãæååãé åããŸãã¯ãªããžã§ã¯ããæ ŒçŽã§ããŸãã
PHP 5ã®zval
ãã®ãããªåæ§é ã®ã¡ã¢ãªã¯ãããŒãã§åå¥ã«å²ãåœãŠãããŸããã ã¿ã€ããšå€ã«å ããŠãæ§é ãžã®åç §ã®ã«ãŠã³ã¿ãŒããã®äžã«ä¿åãããŸããã ãã®ãããæ§é äœã¯ã¡ã¢ãªãããŒãžã£ãŒã®ãªãŒããŒããããšãã®ãã€ã³ã¿ãŒãã«ãŠã³ãããã«24ãã€ãã䜿çšããŸããã
å³äžã®åçã¯ãåçŽãªã¹ã¯ãªããçšã«PHP 5ã®ã¡ã¢ãªã«äœæãããããŒã¿æ§é ã瀺ããŠããŸãã

ã¹ã¿ãã¯ã§ã¯ããã€ã³ã¿ãŒã§è¡šããã4ã€ã®å€æ°ã«ã¡ã¢ãªãå²ãåœãŠãããŸããã å€èªäœïŒzvalïŒã¯ããŒãäžã«ãããŸãã ãã®äŸã§ã¯ããããã¯2ã€ã®zvalã§ãããããããã2ã€ã®å€æ°ã«ãã£ãŠåç §ããããããåç §ã«ãŠã³ã¿ãŒã¯2ã«èšå®ãããŸãã
åãŸãã¯ã¹ã«ã©ãŒå€ã«ã¢ã¯ã»ã¹ããã«ã¯ãå°ãªããšã2ã€ã®èªã¿åãå€ãå¿ èŠã§ããæåã«ãã€ã³ã¿ãŒã®å€ãèªã¿åãã次ã«æ§é äœã®å€ãèªã¿åããŸãã ã¹ã«ã©ãŒå€ã§ã¯ãªããããšãã°æååãŸãã¯é åã®äžéšãèªã¿åãå¿ èŠãããå Žåã¯ãå°ãªããšããã1åèªã¿åãå¿ èŠããããŸãã
PHP 7ã®zval
以åã«ãã€ã³ã¿ãŒã䜿çšããŠããå Žæã§ã7ã€ã«zvalãåã蟌ã¿å§ããŸããã ã¹ã«ã©ãŒåã®åç §ã«ãŠã³ãããé¢ããŸããã ãã£ãŒã«ãã®ã¿ã€ããšå€ã«ã¯å€§ããªå€æŽã¯ãããŸããã§ããããããã€ãã®ãã©ã°ãšäºçŽæžã¿ã®å Žæãè¿œå ãããŸãããããã«ã€ããŠã¯åŸã§èª¬æããŸãã

å·ŠåŽã¯PHP 5ã§ã®å€èŠ³ãå³åŽã¯PHP 7ã§ã®å€èŠ³ã§ãã

çŸåšãzvalèªäœãã¹ã¿ãã¯äžã«ãããŸãã åãšã¹ã«ã©ãŒå€ãèªã¿åãã«ã¯ã1ã€ã®æ©æ¢°èªåœä»€ã§ååã§ãã ãã¹ãŠã®å€ã¯1ã€ã®ã¡ã¢ãªé åã«ã°ã«ãŒãåãããŸããã€ãŸããããŒã«ã«å€æ°ãæäœããå Žåãããã»ããµãã£ãã·ã¥ã®ãã¹ã«ããæ倱ã¯å®è³ªçã«ãããŸããã ãã ããã³ããŒãå¿ èŠãªå Žåã¯ãæ°ããããã©ãŒãã³ã¹ã®çã®åãå«ãŸããŸãã
ã¬ã³ãŒããã³ããŒ
ã¹ã¯ãªããã®æäžè¡ã«ãå¥ã®å²ãåœãŠãè¿œå ãããŸããã

PHP5ã§ã¯ãæ°ããzvalã®ããŒãããã¡ã¢ãªãå²ãåœãŠããã®intïŒ2ïŒãåæåããå€æ°bãžã®ãã€ã³ã¿ãŒã®å€ãå€æŽããbãå ã«åç §ããå€ã®åç §ã«ãŠã³ã¿ãŒãæžãããŸããã
PHP 7ã§ã¯ãããã€ãã®åœä»€ã䜿çšããŠå€æ°bãçŽæ¥æå®ã®äœçœ®ã«åæåããŸããããPHP 5ã§ã¯æ°çŸã®åœä»€ãå¿ èŠã§ããã ãããã£ãŠãzvalã¯ã¡ã¢ãªå ã§è¡šç€ºãããŸãã

ãããã¯2ã€ã®64ãããã¯ãŒãã§ãã æåã®åèªã®æå³ã¯ãæŽæ°ãå®æ°ããŸãã¯ãã€ã³ã¿ãŒã§ãã 2çªç®ã®åèªã«ã¯ã ã¿ã€ã ïŒæå³ã®è§£éæ¹æ³ã瀺ãïŒããã©ã°ãããã³äœçœ®åããäžã«è¿œå ãããäºçŽå Žæãå«ãŸããŸãã ããããæ¶ããããšã¯ãããŸããããéæ¥çã«é¢é£ããå€ãä¿åããããã«ç°ãªããµãã·ã¹ãã ã«ãã£ãŠäœ¿çšãããŸãã
ãã©ã°ã¯ãããã®ã»ãã㧠ãåãããã¯zvalããããã³ã«ããµããŒãããŠãããã©ããã瀺ããŸãã ããšãã°ã
IS_TYPE_REFCOUNTED
å Žåããã®zvalãæäœãããšãããšã³ãžã³ã¯åç §ã«ãŠã³ã¿ãŒã®å€ãåŠçããå¿ èŠããããŸãã å²ãåœãŠããšãã¯å¢å ããã¹ã³ãŒããåºããšãã¯æžå°ããåç §ã«ãŠã³ã¿ãŒããŒãã«éãããšãäŸåæ§é ãç Žå£ããŸãã
ã¿ã€ãã®ãã¡ãPHP 5ãšæ¯èŒããŠãããã€ãã®æ°ããã¿ã€ããç»å ŽããŸããã
-
IS_UNDEF
åæåãããŠããªãå€æ°ã®ããŒã«ãŒã - åäžã®
IS_BOOL
ãåå¥ã®IS_FALSE
ããã³IS_BOOL
眮ãæããããŸããã - ãªã³ã¯çšã®å¥åã®ã¿ã€ããšãããã«ããã€ãã®ããžãã¯ã¿ã€ããè¿œå ãããŸããã
IS_UNDEF
ãã
IS_UNDEF
ãŸã§ã®
IS_DOUBLE
ã¯ã¹ã«ã©ãŒã§ãããè¿œå ã®ã¡ã¢ãªãå¿ èŠãšããŸããã ããããã³ããŒããã«ã¯ãæåã®ãã·ã³64ãããã¯ãŒããå€ã§ã³ããŒãã2çªç®ã®ååãã¿ã€ããšãã©ã°ã§ã³ããŒããŸãã
ã«ãŠã³ãããŠã³
ä»ã®ã¿ã€ãã§ã¯ããå°é£ã§ãã ãããã¯ãã¹ãŠäžäœæ§é ã«ãã£ãŠè¡šãããzvalã¯ãã®æ§é ãžã®åç §ãåã«æ ŒçŽããŸãã ã¿ã€ãããšã«ãã®æ§é ã¯ç°ãªããŸãããOOPã®èŠ³ç¹ããã¯ããã¹ãŠå ±éã®æœè±¡ç¥å ãŸãã¯æ§é zend_refcountedããããŸãã ã¬ããŒãžã³ã¬ã¯ã¿ãŒã®åç §ã«ãŠã³ãããã³ãã®ä»ã®æ å ±ãæ ŒçŽãããæåã®64ãããã¯ãŒãã®åœ¢åŒã決å®ããŸãã

ãã®åèªã¯åã«ã¬ããŒãžã³ã¬ã¯ã¿ãŒã®æ å ±ãšèŠãªãããšãã§ããç¹å®ã®ã¿ã€ãã®æ§é äœã¯ãã®æåã®åèªã®åŸã«ãã£ãŒã«ããè¿œå ããŸãã
è¡
æååã®7ã€ã«ã¯ãããã·ã¥é¢æ°ã®èšç®å€ããã®é·ããããã³æåèªäœãæ ŒçŽãããŸãã ãã®ãããªæ§é ã®ãµã€ãºã¯å¯å€ã§ãããæååã®é·ãã«äŸåããŸãã å¿ èŠã«å¿ããŠãæååã«å¯ŸããŠããã·ã¥é¢æ°ã1åèšç®ãããŸãã PHP 5ã§ã¯ãããããããŒãºã«å¿ããŠåèšç®ãããŸããã

æååã¯åç §ã«ãŠã³ãå¯èœã«ãªããŸãããPHP5ã§æåèªäœãã³ããŒããå Žåããã®æ§é ã®åç §ã«ãŠã³ããå¢ããã ãã§ååã§ãã
PHP 5ã®ããã«ã äžå€ãŸãã¯ã€ã³ã¿ãŒã³ãããæååã®æŠå¿µããŸã ãããŸã ã éåžžããããã¯1ã€ã®ã€ã³ã¹ã¿ã³ã¹ã«ååšããã¯ãšãªã®æåŸãŸã§åç¶ããã¹ã«ã©ãŒå€ã®ããã«åäœã§ããŸãã ããããžã®ãªã³ã¯ã®ã«ãŠã³ã¿ãŒã管çããå¿ èŠã¯ãããŸãããã³ããŒããã«ã¯ã4ã€ã®ãã·ã³åœä»€ã䜿çšããŠzvalã®ã¿ãã³ããŒããã ãã§ååã§ãã
é å
é åã¯çµã¿èŸŒã¿ã®ããã·ã¥ããŒãã«ã§è¡šãããPHP 5ãšããã»ã©éãã¯ãããŸãããããã·ã¥ããŒãã«èªäœã¯å€æŽãããŸããããåå¥ã«å€æŽãããŠããŸãã

é åã¯ãä¿åãããããŒã¿ã«å¿ããŠå éšæ§é ãšåäœããããã«å€æŽããé©å¿æ§é ã«ãªããŸããã è¿ãæ°å€ããŒãæã€èŠçŽ ã®ã¿ãä¿åããå ŽåãCã®é åã®é床ã«å¹æµããé床ã§ã€ã³ããã¯ã¹ã«ãã£ãŠçŽæ¥èŠçŽ ã«ã¢ã¯ã»ã¹ã§ããŸãããã ããåãé åã«æååããŒãæã€èŠçŽ ãè¿œå ãããšãè¡çªè§£æ±ºã䌎ãå®éã®ããã·ã¥ã«ãªããŸãã
ããã¯ãããã·ã¥ããŒãã«ãPHP 5ã§ã©ã®ããã«èŠãããã§ãã

ããã¯ãç·åœ¢ãªã¹ãïŒå³äžé ã«è¡šç€ºïŒã䜿çšããè¡çªè§£æ±ºãåããå€å žçãªããã·ã¥ããŒãã«ã®å®è£ ã§ãã åã¢ã€ãã ã¯ãã±ããã§è¡šãããŸãã ãã¹ãŠã®ãã±ããã¯ãè¡çªã解決ããããã«äºéã«ãªã³ã¯ããããªã¹ãã«ãã£ãŠãªã³ã¯ãããé çªã«å埩ããå¥ã®äºéã«ãªã³ã¯ããããªã¹ãã«ãã£ãŠãªã³ã¯ãããŸãã åzvalã®å€ã¯åå¥ã«å²ãåœãŠãããŸã-Bucketã§ã¯ããã®ãªã³ã¯ã®ã¿ãä¿åããŸãã ãŸããæååããŒã¯åå¥ã«å²ãåœãŠãããšãã§ããŸãã
ãããã£ãŠãããã·ã¥ããŒãã«ããšã«ãå€ãã®å°ããªã¡ã¢ãªãããã¯ãå²ãåœãŠãå¿ èŠããããåŸã§äœããèŠã€ããã«ã¯ããã€ã³ã¿ãŒã«æ²¿ã£ãŠå®è¡ããå¿ èŠããããŸãã ãã®ãããªé·ç§»ã¯ããããããã£ãã·ã¥ãã¹ãš10ã100ããã»ããµãµã€ã¯ã«ã®é 延ãåŒãèµ·ããå¯èœæ§ããããŸãã
ãããPHP 7ã§çºçããããšã§ãã

è«çæ§é ã¯å€æŽããããç©çæ§é ã®ã¿ãå€æŽãããŸããã çŸåšãããã·ã¥ããŒãã«ã®äžã§ãã¡ã¢ãªã¯1ã€ã®æäœã§å²ãåœãŠãããŸãã
ãã®å³ã§ã¯ãããŒã¹ãã€ã³ã¿ãŒã®äžéšã«èŠçŽ ããããäžéšã«ããã·ã¥é¢æ°ã§ã¢ãã¬ã¹æå®ãããããã·ã¥é åããããŸãã ãã©ããé åãŸãã¯ããã¯é åã®å Žåãæ°å€ã€ã³ããã¯ã¹ãæã€èŠçŽ ã®ã¿ãæ ŒçŽãããšãäžéšã¯ãŸã£ããå²ãåœãŠãããããã±ãããçªå·ã§çŽæ¥ã¢ãã¬ã¹æå®ããŸãã
èŠçŽ ããã€ãã¹ããã«ã¯ãããããäžããäžããŸãã¯äžããäžã«é çªã«äžŠã¹ãŸããããã¯ãææ°ã®ããã»ããµãŒã§åé¡ãªãè¡ãããŸãã å€ã¯ãã±ããã«çµã¿èŸŒãŸããŸããããããã®äºçŽã¹ããŒã¹ã¯è¡çªã解決ããããã«ã®ã¿äœ¿çšãããŸãã åãããã·ã¥é¢æ°å€ãŸãã¯ãªã¹ãããŒã«ãŒã®æåŸã«å¥ã®ãã±ããã®ã€ã³ããã¯ã¹ãä¿åããŸãã
ããŒã®æååå€ã®ã¡ã¢ãªã¯åå¥ã«å²ãåœãŠãããŸãããããã§ãåãzend_stringã§ãã é åã«è²Œãä»ãããšãã¯ãæååã®åç §ã«ãŠã³ã¿ãŒãå¢ããã ãã§ååã§ãã以åã¯æåãçŽæ¥ã³ããŒããå¿ èŠããããŸããããæ€çŽ¢æã«ã¯æåã§ã¯ãªãæååèªäœãžã®ãã€ã³ã¿ãŒãæ¯èŒã§ããããã«ãªããŸããã
äžå€é å
以åã¯ãäžå€ã®æååããããŸããããäžå€ã®é åãç»å ŽããŸããã æååãšåæ§ã«ããããã¯åç §ã«ãŠã³ã¿ãŒã䜿çšããããªã¯ãšã¹ããçµäºãããŸã§ç Žæ£ãããŸããã ããã¯ã100äžåã®èŠçŽ ã®é åãäœæããåçŽãªã¹ã¯ãªããã§ãåèŠçŽ ã¯åäžã®ãhelloãèŠçŽ ãæã€åãé åã§ãã

PHP 5ã§ã¯ãã«ãŒãã®åå埩ã§ãæ°ãã空ã®é åãäœæããããhelloããæžã蟌ãŸãããã¹ãŠãçµæã®é åã«è¿œå ãããŸããã PHP 7ã§ã¯ãã³ã³ãã€ã«æã«ãã¹ã«ã©ãŒã®ããã«åäœããäžå€é åã1ã€ã ãäœæããçµæã®é åã«è¿œå ããŸãã æ瀺ãããäŸã§ã¯ãããã«ãããã¡ã¢ãªæ¶è²»éã10å以äžãå éãã»ãŒ10å以äžã«ãªããŸãã
ãã¡ãããå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯æ°çŸäžã®èŠçŽ ã®å®æ°é åã¯ããŸãèŠãããŸããããå°ããªãã®ã¯éåžžã«äžè¬çã§ãã ãããã®ããããã§ãããªãã¯å°ããããåå©ãåŸãã§ãããã
ãªããžã§ã¯ã
PHP 5ã®ãã¹ãŠã®ãªããžã§ã¯ããžã®ãªã³ã¯ã¯å¥ã®ãªããžããªã«ãããzvalã«ã¯ãã³ãã«ã®ã¿ããããŸãã-äžæã®ãªããžã§ã¯ãIDã

ãªããžã§ã¯ãã«å°éããããã«ãå°ãªããšã3ã€ã®èªã¿åããè¡ããŸããã ããã«ããªããžã§ã¯ãã®åããããã£ã®å€ã®ã¡ã¢ãªã¯åå¥ã«å²ãåœãŠããããããèªã¿åãã«ã¯å°ãªããšã2ã€ä»¥äžã®èªã¿åãå€ãå¿ èŠã§ããã
PHP 7ã§ã¯ãçŽæ¥ã¢ãã¬ã¹æå®ã«ç§»è¡ã§ããŸããã

zend_object
ã¢ãã¬ã¹ã¯ãåäžã®ãã·ã³åœä»€ã§ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããã ãŸããããããã£ã¯ãã«ãã€ã³ãããŠãããããããèªã¿åãã«ã¯ãè¿œå ã®èªã¿åãã1ã€ã ãå¿ èŠã§ãã ãŸããã°ã«ãŒãåãããŠããããã ããŒã¿ã®å±ææ§ãåäžããææ°ã®ããã»ããµãã€ãŸãããªãããã«ãªããŸãã
äºåå®çŸ©ãããããããã£ã«å ããŠããã®ãªããžã§ã¯ãã®ã¯ã©ã¹ãžã®ãªã³ã¯ãããã€ãã®ãã³ãã©ãŒïŒä»®æ³ã¡ãœããããŒãã«ã®é¡äŒŒç©ãããã³å®çŸ©ãããŠããªãããããã£ã®ããã·ã¥ããŒãã«ïŒãããã«æ ŒçŽãããŸãã PHPã§ã¯ãå ã å®çŸ©ãããŠããªãã£ããªããžã§ã¯ãã«ããããã£ãè¿œå ã§ããŸããããã€ãã®ãã·ã³åœä»€ã§å®çŸ©æžã¿ã®ããããã£ã«ã¢ã¯ã»ã¹ããã®ã«ååãªå Žåã¯ãå®çŸ©æžã¿ã§ãªãããããã£ã®å Žåãããã·ã¥ããŒãã«ã䜿çšããå¿ èŠããããŸãã ãã¡ãããããã¯ã¯ããã«é«äŸ¡ã§ãã
åç §å
æåŸã«ãPHPãªã³ã¯ãè¡šãå¥ã®ã¿ã€ããå°å ¥ããå¿ èŠããããŸããã

ããã¯å®å šã«éæãªã¿ã€ãã§ãã PHPã¹ã¯ãªããã«ã¯è¡šç€ºãããŸããã ã¹ã¯ãªããã¯ãzend_referenceæ§é ã«çµã¿èŸŒãŸããå¥ã®zvalãåç §ããŸãã ãã®ãããªæ§é ãå°ãªããšã2ç®æããåç §ãããã®æ§é ã®åç §ã«ãŠã³ã¿ãŒã¯åžžã«1ãã倧ããããšãç解ãããŸããã«ãŠã³ã¿ãŒã1ã«äžãããšããªã³ã¯ã¯éåžžã®ã¹ã«ã©ãŒå€ã«å€ãããŸãã ãªã³ã¯ã«åã蟌ãŸããzvalã¯ããããåç §ããæåŸã®zvalã«ã³ããŒãããæ§é èªäœãåé€ãããŸãã
çŸåšãåç §ã§ã®äœæ¥ã¯ä»ã®åãããã¯ããã«è€éã§ããããã§ãïŒãããŠãããã¯äºå®ã§ãïŒããPHP 5ã§ã¯ãå®éã«ã¯ãä»»æã®å€ïŒçŽ æ°æŽæ°ã§ããïŒã«ã¢ã¯ã»ã¹ããéã«åçã®è€éãã®äœæ¥ãè¡ãå¿ èŠããããŸããã çŸåšãããè€éãªãããã³ã«ã1ã€ã®ã¿ã€ãã®ã¿ã«é©çšããŠãããããä»ã®ãã¹ãŠã®ãç¹ã«ã¹ã«ã©ãŒå€ã§ã®äœæ¥ãé«éåãããŠããŸãã
IS_FALSEããã³IS_TRUE
åäžã®ã¿ã€ãIS_BOOLãå¥ã ã®IS_FALSEãšIS_TRUEã«åå²ãããããšã¯æ¢ã«è¿°ã¹ãŸããã ãã®ã¢ã€ãã¢ã¯LuaJITã®å®è£ ã§ã¹ãã€ãããæãäžè¬çãªæäœã®1ã€ã§ããæ¡ä»¶ä»ã移è¡ãé«éåããããã«äœæãããŸããã

PHP 5ã§ã¿ã€ããèªã¿åããããŒã«å€ããã§ãã¯ããå€ãèªã¿åããtrueãŸãã¯falseã§ãããã©ããã確èªããããã«åºã¥ããŠé·ç§»ãè¡ãå¿ èŠããã£ãå Žåãã¿ã€ãããã§ãã¯ããŠtrueãšæ¯èŒããã ãã§ååã§ãã
- ãããæ¬åœãªãã1ã€ã®åå²ã«æ²¿ã£ãŠé²ã¿ãŸãã
- ãããtrueããå°ããå Žåãå¥ã®ãã©ã³ãã«ç§»åããŸãã
- ãããtrueããã倧ããå Žåãããããã¹ããŒãã¹ïŒã¹ããŒãã¹ïŒã«è¡ããããããã©ã®ã¿ã€ãããæ¥ãŠäœããããããã§ãã¯ããŸãïŒæŽæ°ã®å Žåã¯ããã®å€ã0ãšæ¯èŒããå¿ èŠããããŸããããå®éïŒïŒãªã©
åŒã³åºãèŠçŽ
åŒã³åºãèŠçŽãŸãã¯é¢æ°åŒã³åºãèŠçŽã®å€æŽã¯ãããŒã¿æ§é ã ãã§ãªãåºç€ãšãªãã¢ã«ãŽãªãºã ã«ã圱é¿ããéèŠãªæé©åã§ãã å·ŠåŽã®å³ã«ã¯ãfooïŒïŒé¢æ°ãšãã®åŒã³åºãã§æ§æãããå°ããªã¹ã¯ãªããããããŸãã 以äžã¯ããã®ã¹ã¯ãªãããPHP 5ã§ã³ã³ãã€ã«ããããã€ãã³ãŒãã§ãã

ãŸããPHP 5ã§ã©ã®ããã«æ©èœãããã説æããŸãã
PHP 5ã®åŒã³åºãèŠçŽ
æåã®
SEND_VAL
ã¹ããŒãã¡ã³ãã¯ãå€ã3ããfooé¢æ°ã«éä¿¡ããããšã§ããã ãããè¡ãããã«ã圌女ã¯ããŒãã«æ°ããzvalãå²ãåœãŠãããã«å€ïŒ3ïŒãã³ããŒãããã®æ§é äœãžã®ãã€ã³ã¿ãŒã®å€ãã¹ã¿ãã¯ã«æžã蟌ãããšãäœåãªããããŸããã

2çªç®ã®åœä»€ã§ãåæ§ã§ãã ããã«
DO_FCALL
CALL FRAME
åæåããããŒã«ã«å€æ°ããã³äžæå€æ°ã®å ŽæãäºçŽããåŒã³åºãããé¢æ°ã«å¶åŸ¡ã移ããŸããã

æåã®
RECV
ã¯æåã®åŒæ°ããã§ãã¯ãã察å¿ããããŒã«ã«å€æ°ïŒ$ aïŒã§ã¹ã¿ãã¯äžã®ã¹ããããåæåããŸããã ããã§ã¯ãã³ããŒããã«ã察å¿ãããã©ã¡ãŒã¿ãŒã®åç §ã«ãŠã³ã¿ãŒãå¢ãããŸããïŒå€3ã®zvalïŒã åæ§ã«ã2çªç®ã®
RECV
ã¯ãå€æ°$ bãšãã©ã¡ãŒã¿ãŒ5ã®éã«æ¥ç¶
RECV
確ç«ããŸããã

ãããªã身äœæ©èœã 3 + 5ã®è¿œå ãçºçããŸãã-å€æããŸãã8.ããã¯äžæå€æ°ã§ããããã®å€ã¯ã¹ã¿ãã¯ã«çŽæ¥æ ŒçŽãããŠããŸããã

æ»ããé¢æ°ããæ»ããŸãã

æ»ã£ãæç¹ã§ãã¹ã³ãŒãå€ã®ãã¹ãŠã®å€æ°ãšåŒæ°ã解æŸããŸãã ãããè¡ãã«ã¯ã解æŸããããã¬ãŒã ã®ã¹ããããåç §ãããã¹ãŠã®zvalã調ã¹ãããããã«ã€ããŠåç §ã«ãŠã³ããæžãããŸãã 0ã«éãããšã察å¿ããæ§é ãç Žå£ããŸãã
ã芧ã®ããã«ãé¢æ°ã«å®æ°ãéä¿¡ãããããªåçŽãªæäœã§ããæ°ããã¡ã¢ãªãå²ãåœãŠãåç §ã«ãŠã³ã¿ãã³ããŒããŠå¢å ããããã®åŸãäºéã«æžå°ãããŠåé€ããå¿ èŠããããŸãã
PHP 7ã®åŒã³åºãèŠçŽ
PHP 7ã§ã¯ããããã®åé¡ãä¿®æ£ããŸãããçŸåšãã¹ã¿ãã¯ã«ã¯zvalãã€ã³ã¿ãŒã§ã¯ãªããzvalãã€ã³ã¿ãŒèªäœãæ ŒçŽããŠããŸãã

ãŸããæ°ããåœä»€
INIT_FCALL
å°å ¥ããŸããããã®åœä»€ã¯ã
CALL FRAME
äžã§ã¡ã¢ãªã®åæåãšå²ãåœãŠãè¡ããåŒæ°ãšäžæå€æ°çšã®ã¹ããŒã¹ãäºçŽããŸãã

SEND_VAL 3
ã¯ãåŒæ°ã
CALL FRAME
åŸã®æåã®ã¹ãããã«ã³ããŒããã ãã§ãã 次ã®
SEND_VAL 5
ã2çªç®ã®ã¹ãããã«ã

ãã®åŸãæãèå³æ·±ãã
DO_FCALL
ã¯ãåŒã³åºãããé¢æ°ã®æåã®åœä»€ã«å¶åŸ¡ãæž¡ãããã«æãããŸãã ããããåŒæ°ã¯æ¢ã«å€æ°ãã©ã¡ãŒã¿ãŒ$ aããã³$ bã«äºçŽãããŠããã¹ãããã«ãããããŠããã
RECV
åœä»€ã¯äœãããŸããã ãããã£ãŠãåçŽã«ã¹ãããã§ããŸãã 2ã€ã®ãã©ã¡ãŒã¿ãŒãéä¿¡ããããã2ã€ã®æ瀺ãã¹ãããããŸãã 圌ãã3ã€ãéã£ããªãã°ã圌ãã¯3ã€ãéããã§ãããã

ãããã£ãŠãé¢æ°ã®æ¬äœã«çŽæ¥ç§»åããè¿œå ããŠæ»ããŸãã

æ»ããšãããã¹ãŠã®ããŒã«ã«å€æ°ãã¯ãªã¢ããŸãããçŸåšã¯2ã€ã®ã¹ãããã®ã¿ã§ãããã«ã¹ã«ã©ãŒãããã®ã§ãåã³äœãããå¿ èŠã¯ãããŸããã

ç§ã®è©±ã¯å°ãåçŽåãããŠããŸãããå¯å€æ°ã®åŒæ°ãæã€é¢æ°ããåãã§ãã¯ããã®ä»ã®ãã€ã³ãã®å¿ èŠæ§ã¯èæ ®ãããŠããŸããã
æ°ããCalling Conventionã¯ãäºææ§ãå°ãå£ããŠããŸã ã PHPã«ã¯
func_get_arg
ã
func_get_args
ãªã©ã®é¢æ°ããã
func_get_args
ã 以åã«éä¿¡ããããã©ã¡ãŒã¿ãŒã®å ã®å€ãè¿ããå Žåã¯ãå ã®å€ãä¿åããªãããã察å¿ããããŒã«ã«å€æ°ã®çŸåšã®å€ãè¿ããŸãã C.ãããã¬ãŒãè¡ãããã«

ããã«ãé¢æ°ã«åãååã®è€æ°ã®ãã©ã¡ãŒã¿ãŒãå«ããããšã¯ã§ããªããªããŸããã ããã«ã¯æå³ããããŸããã§ãããããã®ãããªPHPã³ãŒã
foo($_, $_)
ã«åºäŒããŸããã ã©ã®ããã«èŠããŸããïŒ ïŒããããŒã°ãèªèããŸããïŒ
æ°ããã¡ã¢ãªãããŒãžã£ãŒ
ããŒã¿æ§é ãšåºæ¬çãªã¢ã«ãŽãªãºã ã®æé©åãçµããŠããã¹ãŠã®ãã¬ãŒããµãã·ã¹ãã ã«åã³æ³šç®ããŸããã PHP 5ã®ã¡ã¢ãªãããŒãžã£ãŒã¯ãWordpressã®ããã»ããµæéã®ã»ãŒ20ïŒ ãå ããŠããŸããã
倧éã®å²ãåœãŠãåãé€ããåŸã圌ã®ãªãŒããŒãããã³ã¹ãã¯äœããªããŸããããããã§ãããªãã®é¡ã«ãªããŸãããããã¯ãããªãã®ä»äºãããŠããããã§ã¯ãªãããã£ãã·ã¥ã«ã€ãŸãããããã§ãã ããã¯ãåŸæ¥ã®Doug Leaã®mallocã¢ã«ãŽãªãºã ã䜿çšããããã«çºçããŸãããããã¯ããªã³ã¯ãšããªãŒã移åããããšã§é©åãªç©ºãã¡ã¢ãªé åãèŠã€ããããšãæå³ãããããã®ãã¹ãŠã®ããªããã¯å¿ ç¶çã«ãã£ãã·ã¥ãã¹ãåŒãèµ·ãããŸããã
ä»æ¥ãææ°ã®ããã»ããµã®æ©èœãèæ ®ããæ°ããã¡ã¢ãªç®¡çã¢ã«ãŽãªãºã ããããŸãã ããšãã°ãGoogleã® jemallocãšptmallocã§ã ã æåã¯ãããããå€æŽããã«äœ¿çšããããšããŸããããPHPåºæã®æ©èœããªãããããªã¯ãšã¹ãã®æåŸã«ã¡ã¢ãªãå®å šã«è§£æŸããã®ã«è²»çšãããããããåã¡ãŸããã§ããã ãã®çµæãdlmallocãæŸæ£ããå€ãã¡ã¢ãªãããŒãžã£ãšjemallocã®ã¢ã€ãã¢ãçµã¿åãããŠãç¬èªã®äœããäœæããŸããã
Memory Managerã®ãªãŒããŒãããã5ïŒ ã«åæžãããµãŒãã¹æ å ±ã®ã¡ã¢ãªãªãŒããŒããããåæžããCPUãã£ãã·ã¥ã®äœ¿çšãæ¹åããŸããã é©åãªã¡ã¢ãªãããã¯ãããããããã§æ€çŽ¢ãããããã«ãªããå°ããªãããã¯ã®ã¡ã¢ãªã¯åå¥ã®ããŒãžããå²ãåœãŠããããªãªãŒã¹æã«ãã£ãã·ã¥ãããé »ç¹ã«äœ¿çšããããããã¯ãµã€ãºã«ç¹åããæ©èœãè¿œå ãããŸãã
å€ãã®å°ããªæ¹å
æãéèŠãªæ¹åç¹ã«ã€ããŠã®ã¿èª¬æããŸãããããã£ãšå°ããªæ¹åç¹ããããŸããã ãããã®ããã€ãã«èšåããããšãã§ããŸãã
- å éšé¢æ°ã®ãã©ã¡ãŒã¿ãŒã解æããããã®é«éAPIããã³HashTableãå埩åŠçããããã®æ°ããAPIã
- æ°ããVMåœä»€ïŒæååé£çµãç¹æ®åãã¹ãŒããŒåœä»€ã
- äžéšã®å éšé¢æ°ã¯ãstrlenãis_intãšããVMåœä»€ã«å€æãããŸããã
- VMã¬ãžã¹ã¿ãŒã«CPUã¬ãžã¹ã¿ãŒã䜿çšããïŒIPããã³FPã
- ã¢ã¬ã€ã®è€è£œãšåé€ã®æé©åã
- ã§ããéãã³ããŒãã代ããã«ããªã³ã¯ã«ãŠã³ãã䜿çšããŸãã
- PCRE JITã
- å éšé¢æ°ã®æé©åãšã·ãªã¢ã«åïŒïŒã
- ã³ãŒããµã€ãºãšåŠçããŒã¿ãåæžããŸãã
ããã€ãã¯éåžžã«åçŽã§ãããããšãã°ãéåžžã®çç è¡šçŸã§JITãæå¹ã«ããã®ã«3è¡ã®ã³ãŒãããå¿ èŠãšããªãã£ããããã»ãšãã©ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã§ããã«ç®ã«èŠããïŒ2-3ïŒ ïŒå éãããããããŸããã ãã®ä»ã®æé©åã¯ãç¹å®ã®PHPé¢æ°ã®ããã€ãã®çãåŽé¢ã«è§ŠããŠãããç¹ã«èå³æ·±ããã®ã§ã¯ãããŸãããããããã®å°ããªæ¹åãã¹ãŠã®å šäœçãªè²¢ç®ã¯éåžžã«éèŠã§ãã
äœã«æ¥ãŸããã
ããã¯ãWordPress / PHP 7.0ã®ããŸããŸãªãµãã·ã¹ãã ã®è²¢ç®ã§ãã

ä»®æ³ãã·ã³ã®è²¢ç®åºŠã¯50ïŒ ã«å¢å ããŸãããMemory Managerã®æ¶è²»éã¯ãã§ã«5ïŒ æªæºã§ããããã¯ãäž»ã«Memory Managerèªäœã®æé©åã«ãããã®ã§ã¯ãªããåŒã³åºãåæ°ãæžãããããã§ããåããã¹ãã§ä»¥åã«ã¡ã¢ãªã1å3,000äžåå²ãåœãŠãããå ŽåãçŸåšã¯1,000äžåã§ãããã¹ãŠã®äž»ãªå éã¯ãã¡ã¢ãªãããŒãžã£ã®ãªãŒããŒããããæžãããããŒã¿æ§é ã®æ¹åã«ããã¡ã¢ãªãããŒãžã£ãžã®åŒã³åºãåæ°ãæžããããšã§éæãããããã«èŠããŸãããå®éã«ã¯ãã¹ãŠã®ãµãã·ã¹ãã ãå€§å¹ ã«æ¹åãããŸããã

å éã®äž»ãªæºïŒ
- éèš³ã¯2åè¯ããªãå§ããŸããã
- MMãªãŒããŒãããã¯17åæžå°ããŸããã
- ããã·ã¥ããŒãã«ã¯4åéãåäœãå§ããŸããã
- WordPressã®ç·çç£æ§ã¯3.5åã«ãªããŸããã
2,5- , . ãªããã , , CPU time, â , . PHP , .
PHP 7
WordPress 3.6 â . - , PHP 7 mysql, , .

, PHPNG. 2/3 . , .
, WordPress, , â 1,5 2- .
PHP 7 HHVM
HHVM.

â . . Facebook . HHVM . , , , , .

PHP 7 â . Vebia, Etsy Badoo. Highload- , .
PHP 7.0 Etsy Badoo -. Badoo .

, 2 , â 7 .
PHP 7.0. , PHP 7.1, .
PHP Russia PHP 8 . PHP, , , â 1 . , , â , , , .