Upgrade to Pro — share decks privately, control downloads, hide ads and more …

テストコードが無くてPHP7へのバージョンアップが出来ない?ボットで解決しました!

 テストコードが無くてPHP7へのバージョンアップが出来ない?ボットで解決しました!

PHPカンファレンス仙台2019の発表資料です。

長期運用中スマホゲームのサーバで使用しているPHPを短期間でバージョンアップしたことについて紹介します。
テストコードが無いプロジェクトでどのようにしてPHP5.6からPHP7.2にバージョンアップを成功させたか、また、その後のパフォーマンス向上について紹介します。

#phpconsen

Ec2fcdc4ea7905b289967a2c4c43e154?s=128

CyberAgent SGE Engineer

January 26, 2019
Tweet

Transcript

  1. @ / 0 76 / H 1 12 P 9

    @
  2. S 9 S 4 S G 3P 2 2 4

    1 71 02 S G E8 G 4 4 4 8 H
  3. d E • R ( G E • 6 )

    3 • 0 G 2 ( (VJME WT (VJMEͷུɻΦϯϥΠϯήʔϜͰϓϨΠϠʔͷूஂಉ͕࢜ରઓΛ͢Δ
  4. • 32 6 0 ) 0 ) • 6 )

    0 ) ( )      
  5. None
  6.         

  7.      

  8.     

  9.   

  10. 52 0 4 2 1 52

  11. None
  12.   

  13. • 2 2 • 2 • 2   

     
  14. n • n • • e6 6P • 3. 215

    • n • L d 6 6 • b6T LPW 6 C • T 6 C • t 6 6 • LPW 6 C • 6 6 • n o • H • 7 • n i g L • i • 6 6 n r C • Mg I n
  15. • / • / master php7

  16.   •      

  17. ,2 • 1 1 ,2 • ,

  18. ma H i • P in j e h g

    • P • 66 2 6 1 27 0 / 1. 5 6. 2 • P • 66 2 6 1 27 0 / 1. 5 6. 2 • P • 66 2 6 1 27 0 / 1. 5 6. 2 • i ol h g :
  19. _ e a • ) gcH P • ) gcH

    P P H H jil • -7 : - • ( # / 4 0 7 #./ /- /.# 0 7 #./ /- /.# -7 : - 7 : Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; foo has a deprecated constructor in example.php on line 3 ) gcH P hd
  20. • ( 0 ( 0 • ( 0 ( 0

    a • / / # ( :( ( 0.7( 0 # 7 ( # / 0.7( 0 # 7 ( # ( 0 ( Deprecated: Non-static method foo::bar() should not be called statically in - on line 8 ( 0 ( 0 -: 0 )(7
  21. T • • • • Declaration of %s::%s() should be

    compatible with that of %s::%s() T
  22. IP • / 7: 7 HR ) G • (

    N A 7 HR • 2:: 2 70: .7 . . 7/: 7 / 7: 2 In PHP 7.2.0 count(NULL) returns a warning: Warning: count(): Parameter must be an array or an object that implements Countable
  23. • 7 : • 0 / 0 . - /

    0# 0 / . / 0# 0 / . . 0 . 0 0
  24. • . HE • :A P H . H7 •

    / / / . / / . HE // .
  25.  •   •    

  26.       

  27.      

  28.      

  29.      

  30.  

  31.     

  32.   

  33.    

  34. 3 5G 3 5G 1 . . 1 4 2

    4 ( ) 4 . G ( 4 . 0 ). 0 G 2 0 2 3 G .v1 4
  35. y eg ysuv • uv • ) (GC : •

    Q • CC E GC : • E : C • d 0 M g • /D c g • y w • n t )E) JiJi v W Pg • c v j n • mo t JiJi Ohg • LaP • w • p vru R LO • p x y Sg • • UQ l M Jg3: . R
  36. • • G I • [ { ... }, {

    ... }, ... ]   JSON     
  37. • • G I • [ { ... }, {

    ... }, ... ]   JSON      
  38. • • G I • [ { ... }, {

    ... }, ... ]  % JSON! +   *  ) ( #'&$  JSON"* %
  39.   •      master GvG

    slave GvG       ( ) start start 
  40. )$'&($ "#%* • +!*.)$'-, master GvG!. slave GvG&  

     ,- ($ ( *(')  ) ( %"#    GvG  5/ 42861  03  79 start start +
  41.   •      master GvG

    slave GvG       ( ) start start  master/slave 
  42. G • G

  43.   •      master GvG

    slave GvG       ( ) start start  GvG 
  44. A B • A G

  45.   • #  ! start  GvG 

       start       1  /mypage /gvg /quest /quest/flash   "%$
  46. . • . • . • /

  47. V T eh a m c • . . i

    ml • ml • T b
  48. I A • P    !

  49.   

  50. G 5 G 0 2 14 5 5 3 .

    5    
  51. 7 21 4 0 9 6 3 V 2 -

    0 5V 2 3 24 2 - 7 21 4 V G 3 5 24 2 - 5 V 1 V V
  52. 7 21 4 0 9 6 3 V 2 -

    0 5V 2 3 24 2 - 7 21 4 V G 3 5 24 2 - 5 V 1 V V    
  53. None
  54. 4 4 •       •

    P 5 H • 3H • ee W b • H C 6 3 • W 23 6 H • 6 3 W 2
  55. 4 4 •     • P 5

    H • 3H • ee W b • H C 6 3 • W 23 6 H • 6 3 W 2  
  56. None
  57. 

  58.      

  59.       % %

  60. . % %

  61. % 6

  62. None
  63. 

  64.  

  65. b b ('*('* ( ◌ื ◌ื )))

  66.  

  67. ^ w ^ > < < ! G < <

    ! ^ _ > ^ ! < <! v GG ;! _ ^ ^ G G G G ( (! ^ G ) ´
  68. _ w w w !> > !> > w w

    ! !>G> ;; w w ! ;;!< < !(( ´ !) ) m v ^ ^ ^ !) )
  69.      

  70.   

  71.     

  72. None
  73. 692 G B : / 1 0 άϦϑΥϯ ΤϯδχΞϒϩά E

    . / .
  74.