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

ハイパフォーマンスPHPアプリケーション(への道)

fortkle
April 14, 2016

 ハイパフォーマンスPHPアプリケーション(への道)

ハイパフォーマンスを目指すにあたって誰もが知っておきたい基本的なところをまとめました。

fortkle

April 14, 2016
Tweet

More Decks by fortkle

Other Decks in Technology

Transcript

  1.  ϝσΟΞ ϢʔβʔࢀՃܕΞϓϦ mamari jp mamari Q ϚϚͷ 3ਓʹ1ਓ ͕ར༻ʂ

    ࢀরɿGoogle Analytics ݄ؒར༻ऀ 400ສਓ Ҏ্ ʮਓͷੜ׆ʹͳͯ͘͸ͳΒͳ͍ʯαʔϏεΛ૑Δ
  2. ύϑΥʔϚϯε͸Ϗδωεʹ Өڹ͢Δ • Amazon : ϖʔδͷԠ౴଎౓͕0.1ඵݮΔͱച্͕1% ૿Ճͨ͠ • Google :

    ϖʔδͷԠ౴଎౓͕2%஗͘ͳΔͱɺϢʔ βʔຖͷݕࡧߦಈ͕2%ݮগͨ͠ • Yahoo! : ϖʔδͷԠ౴଎౓Λ0.4ඵ୹ॖ͢Δͱɺτϥ ϑΟοΫ͕9%૿Ճͨ͠ http://radar.oreilly.com/2008/08/radar-theme-web-ops.html http://assets.en.oreilly.com/1/event/29/Keynote%20Presentation%202.pdf http://www.slideshare.net/stoyan/dont-make-me-wait-or-building-highperformance-web-applications#btnNext
  3. ੑೳΛ͋ΘΒ͢ʮ඼࣭ಛੑʯ • ʮੑೳʯ͸ཁ݅ఆٛ͠ʹ͍͘ • ιϑτ΢ΣΞςετͷੈքʹʮ඼࣭ಛੑʯͱ͍͏ج४͕͋Δ • ػೳੑɺ৴པੑɺޮ཰ੑɺҠ২ੑɺ࢖༻ੑͷ5ͭ • ࠓճ͸ͦΕΒ඼࣭ಛੑͷதͰ΋ҎԼ2ͭΛऔΓ্͛Δ(ͬ͘͟Γ) •

    ʮػೳੑɺ৴པੑɺҠ২ੑʯ → ʮίʔυͷಡΈ΍͢͞ʯ • ʮޮ཰ੑɺ࢖༻ੑʯ → ʮԠ౴଎౓ʯ • ʮಡΈ΍͢͞ʯͱʮԠ౴଎౓ʯΛߴΊΔࣄ͕ੑೳͷߴ͞ʹܨ͕Δ
  4. ʮಡΈ΍͢͞ʯΛߴΊΔ • PHP7ͷ৽͍͠ه๏͸ՄಡੑΛߴΊΔ • ྫʣ??ԋࢉࢠ • nullͰͳ͚Ε͹ͦͷ஋ΛɺnullͳΒӈΦϖϥϯυΛฦ͢ • ΋͏ isset()

    Ͱ͍͍ͪͪ֬ೝ͠ͳͯ͘ྑ͍ʂʂʂʂ
 
 
 
 
 
 
 // PHP <= 5.6 $name = isset($user["name"]) ? $user["name"] : "໊ແ͠"; // PHP7 $name = $user["name"] ?? "໊ແ͠";
  5. ʮಡΈ΍͢͞ʯΛߴΊΔ • ྫʣฦΓ஋ͷλΠϓώϯτɺεΧϥܕͷλΠϓώϯτΛαϙʔτ • ؔ਺ͷฦΓ஋ʹܕ͕ࢦఆͰ͖ΔΑ͏ʹͳͬͨ • ৽ͨʹint, float, string, bool

    ܕΛαϙʔτ
 
 
 
 
 
 
 
 <?php function hoge(int $base): array { $array = [1, 2, 3]; foreach ($array as $key => $num) { $array[$key] = $num * $base; } return $array; } hoge(3); // return [3, 6, 9] hoge("͍͋͏"); // PHP Fatal error: Uncaught TypeError: Argument 1 passed to hoge() must be of the type integer
  6. ʮಡΈ΍͢͞ʯΛߴΊΔ • ίϚϯυ࣮ߦ΋phpcsͱ΄΅ಉ༷ɻ • ࣮ߦͯ͠git؅ཧ͢Ε͹मਖ਼׬ྃʂͱ͍͏खܰ͞
 
 
 
 
 


    // ࣗಈ੔ܗ $ vendor/bin/phpcbf --standard=./phpcs.xml ./app // มߋϑΝΠϧΛgit؅ཧ $ git st $ git add . $ git commit
  7. ʮԠ౴଎౓ʯΛߴΊΔ • ܭଌ͢ΔʹϓϩϑΝΠϥʔͷ࢓ࣄ • PHPʹରԠ͍ͯ͠ΔϓϩϑΝΠϥʔ • ྫ) Xdebug, Xhprof, NewRelic,

    Blackfire.io • PHP7ʹରԠ͍ͯ͠ΔϓϩϑΝΠϥʔ(ॏཁ) • Xdebug ɾɾɾରԠࡁΈ • XhprofɾɾɾެࣜඇରԠʢFork൛ͰରԠࡁVer͋Γʣ • NewRelicɾɾɾ 2016೥3݄7೔ରԠVer ϦϦʔεʂ • Blackfire.ioɾɾɾ2016೥2݄2೔ରԠVer ϦϦʔεʂ
  8. ʮԠ౴଎౓ʯΛߴΊΔ • ࠷ऴతʹɺ 27.6 ඵ͔͔͍ͬͯͨΞϓϦέʔγϣϯ͕
 5.9ඵ·Ͱૣ͘ͳͬͨʂʢ͔͠΋PHPͷվम͚ͩͰʂʣ • ΄ͱΜͲಛघͳࣄΛ۪ͤͣ௚ʹʮܭଌͯ͠վળˠܭଌͯ͠ɾɾɾʯΛ
 ܁Γฦ͢͜ͱͰίʔυ͸ྑ͘ͳ͍ͬͯ͘(͜ͷؒɺ1~2࣌ؒఔ౓)ɻ •

    ਪଌͤͣʹ࣮ࡍʹܭଌͯ͠ϘτϧωοΫΛ௵͢ͷ͕େࣄɻ
 ͜Ε͕PHP7ʹม͚͑ͨͩͰ͸ղܾ͠ͳ͍໰୊ɻఆظతʹৼΓฦΔͷॏཁɻ • ͨͩɺ͕͢͞ʹ5.9ඵͰ΋ॏ͍ͷͰͦͷޙઃܭ͔Βݟͳ͓ͯ͠
 1ඵҎԼʹվળͨ͠ɻ