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

PHP メモリ管理術

Avatar for memory memory
September 24, 2022

PHP メモリ管理術

PHP Conference Japan 2022
English Title: How to manage memories accurately in PHP

Avatar for memory

memory

September 24, 2022
Tweet

More Decks by memory

Other Decks in Technology

Transcript

  1. @2020 Torana, Inc. ͦ΋ͦ΋ϝϞϦͬͯԿʁ  ୺తʹݴͬͯ͠·͑͹ɼσʔλΛҰ࣌తʹه࿥͢Δͱ͜ΖͰ͢ 
 ʢ˞ࢲͷϋϯυϧωʔϜͱ͸ؔ܎͕͋Γ·ͤΜʂʣ  شൃੑϝϞϦʢ͍ΘΏΔ3".ʣ΍ෆشൃੑϝϞϦͳͲ͋Γ·͢Ͷɻ

     ༻్ʹΑͬͯ෼͚ΒΕ·͢ɻ৘ใܥͷֶ෦ग़਎ͷਓ͸ɼߨٛͰ 
 ݏʹͳΔ͘Β͍ɼ΍ͬͨΜ͡Όͳ͍͔ͳͱࢥ͍·͢ɻ  ओهԱ૷ஔͱͯ͠࢖ΘΕΔ΋ͷ͸େ൒͕3".Ͱ͢ɻ
  2. @2020 Torana, Inc. ͦ΋ͦ΋ϝϞϦͬͯԿʁ  ྫ͑͹"84ͷΠϯελϯεΛબͿͱ͖ʹϝϞϦͷ߲໨ SMBSHFͳͲ ͕͋Δ͔ͳͱࢥ͍·͕͢ɼͦΕͰ͢ɻ  ͨͩɼଞͷιϑτ΢ΣΞͳͲͰ΋ϝϞϦΛ࢖༻͍ͯ͠ΔͨΊɼࢦఆ͠

    ͨϝϞϦ͕શͯ࢖͑Δͱ͸ݶΓ·ͤΜ  ͕ͨͬͯ͠1)1ͰJOJ@TFU NFNPSZ@MJNJU ( ͳͲͱ҆௚ʹ 
 ࢦఆ͢Δͷ͸ϕετϓϥΫςΟεͱ͸ݴ͑·ͤΜɻ
  3. @2020 Torana, Inc. 1)1ͷϝϞϦ  ͦ΋ͦ΋ىಈ͚ͩʹ.ఔ౓࢖༻͍ͯ͠Δͷ͸ͳ͔ͥɻ  DPO fi HVSFEJTBCMFBMMͰϏϧυ࣌ʹશͯͷϞδϡʔϧΛແޮԽʹ

    ͯ͠΋ɼಛஈϝϞϦ࢖༻ྔ͕ݮΔ͜ͱ͸͋Γ·ͤΜɻ  ৗʹ  όΠτ . ɹ͕ফඅ͞Ε͍ͯΔ͜ͱ͕Θ͔Γ·͢ɻ 6CVOUVPO%PDLFSͷ৔߹   ͜Ε͸[FOE@BMMPD@TJ[FTIͷ;&/%@..@$)6/,@4*;&͕.# ͱͳ͍ͬͯΔ͔ΒͰ͢
  4. @2020 Torana, Inc. 1)1ͷϝϞϦ  ͦ΋ͦ΋ىಈ͚ͩʹ.ఔ౓࢖༻͍ͯ͠Δͷ͸ͳ͔ͥɻ  ͳ͓ɼϝϞϦͷ࢖༻ྔ͸;&/%@..@$)6/,@4*;&ͷ 
 νϟϯΫαΠζ͕ࢀর͞Ε·͢

     ͕ͨͬͯ͠ɼ͜ͷ஋ͷഒ਺ΛNFNPSZ@MJNJUʹઃఆ͢Δ΄͏͕ɼ ޮ཰ྑ͍ͱ͍͏͜ͱ͕Θ͔Γ·͢ɻ  σϑΥϧτ͸.#Ͱ͢ͷͰ.#ͷഒ਺ͷ஋Λઃఆ͠·͠ΐ͏
  5. @2020 Torana, Inc. 1)1ͷϝϞϦ  NFNPSZ@HFU@VTBHFNFNPSZ@HFU@QFBL@VTBHFͷ஋ʹ͍ͭͯ  NFNPSZ@HFU@VTBHFNFNPSZ@HFU@QFBL@VTBHF͸USVFΛୈҾ਺ʹࢦఆͨ͠ ৔߹ɼ 


    ;&/%@..@$)6/,@4*;&ϕʔεʹͳΔɻʢͭ·Γ࣮ࡍʹ"MMPDBUF͞ΕͨϝϞ Ϧফඅྔʣ  ;FOE.FNPSZ.BOBHFS͕ͲΕ΄Ͳ࣮ࡍʹ"MMPDBUF͍ͯ͠Δ͔Λ 
 ஌Γ͍ͨ৔߹  ͦͷதͷϝϞϦফඅྔΛಘ͍ͨ৔߹͸ୈҾ਺ʹ͸ಛஈࢦఆ͠ͳ͍΄͏͕ྑ͍ɻ  ྫ͑͹ಛఆͷൣғͷॲཧͰϝϞϦͷফඅྔΛ஌Γ͍ͨਓ޲͚
  6. @2020 Torana, Inc. 1)1ͷϝϞϦ  NFNPSZ@HFU@VTBHFNFNPSZ@HFU@QFBL@VTBHFͷ஋ʹ͍ͭͯ  ͜ΕΒͷ஋͸;FOE.FNPSZ.BOBHFS͕ϕʔεͱͳ͍ͬͯΔͨΊ 
 64&@;&/%@"--0$ͱͨ͠৔߹͸ৗʹ͕ฦΓ·͢ɻ

     ·ͨɼ͜Ε͸1)1͕ϓϩηεͱͯ͠࢖༻͍ͯ͠ΔϝϞϦফඅྔͰ͸ͳ͍ ʢ;FOE.FNPSZ.BOBHFS্Ͱ͋ΔͨΊʣͨΊϓϩηεͦͷ΋ͷ͕࢖༻͍ͯ͠ ΔϝϞϦফඅྔΛ஌Γ͍ͨ৔߹͸ɼҟͳΔखஈ͕ඞཁͰ͢ɻ  ͨͩ͠ɼ64&@;&/%@"--0$͸ɼϝϞϦϦʔΫݕग़࣌Ҏ֎ʹ࢖͏΂͖΋ ͷͰ͸ͳ͍ͱ1)1ϚχϡΞϧʹهࡌ͞Ε͍ͯ·͢ɻ 
 ࢀরIUUQQIQBEBNIBSWFZOBNFNBOVBMKB JOUFSOBMTNFNPSZNBOBHFNFOUQIQ
  7. @2020 Torana, Inc. 1)1ͷϝϞϦ  NFNPSZ@HFU@VTBHFNFNPSZ@HFU@QFBL@VTBHFͷ஋ʹ͍ͭͯ  ԼهͰऔಘͰ͖·͢ɻ  744

     TZTUFN QTVQHFUNZQJE cHSFQQIQcBXL\QSJOU^   344  TZTUFN QTVQHFUNZQJE cHSFQQIQcBXL\QSJOU^ 
  8. @2020 Torana, Inc. ༨ஊ  ଞʹ΋ૹΒΕͯ͘Δ1045ͷαΠζΛܾఆ͢ΔQPTU@NBY@TJ[FͳͲ͕͋Γ ·͢ɻ  ͜Ε͸Ұ࣌ϑΝΠϧͱͯ͠࡞੒͞ΕΔͨΊɼ 


    NFNPSZ@MJNJUQPTU@NBY@TJ[FͰ͋Δඞཁ͸͋Γ·ͤΜɻ  QIQENFNPSZ@MJNJU.EQPTU@NBY@TJ[F.4 ͰϏϧτΠϯαʔόʔΛىಈ͠ɼ࣮ࡍʹ.ΑΓ 
 େ͖͍ϑΝΠϧΛૹ৴ͯ͠΋ɼ໰୊ͳ͍͜ͱ͕֬ೝͰ͖·͢  ͨͩ͠ɼ4"1*@1045@#-0$,@4*;& σϑΥϧτ CZUFT ෼ͷ ϝϞϦ͸ʢ;FOE.FNPSZ.BOBHFSͷ֎Ͱʣ࢖༻͞Ε·͢ɻ
  9. @2020 Torana, Inc. ༨ஊ  ଞʹ΋ૹΒΕͯ͘Δ1045ͷαΠζΛܾఆ͢ΔQPTU@NBY@TJ[FͳͲ͕ ͋Γ·͢ɻ  ͭ·ΓQPTU@NBY@TJ[F͸αʔόʔ͕Ұ࣌ϑΝΠϧΛ࡞੒Ͱ͖Δ༰ྔ ʹΑܾͬͯఆ͢΂͖Ͱ͋Δͱݴ͑·͢ɻ

     ొஃ಺༰͔ΒҳΕΔͷͰৄࡉ͸ׂѪ͠·͕͢ɼҰ࣌ϑΝΠϧɼ ΦʔϓϯՄೳͳϑΝΠϧ਺ͳͲΛߟྀͨ͠ͱ͖ʹɼ 
 Χʔωϧύϥϝʔλͷௐ੔͕ඞཁʹͳΔՄೳੑ΋͋Γ͑·͢ɻ
  10. @2020 Torana, Inc. ༨ஊ  ಉ༷ʹΞοϓϩʔυ͢ΔϑΝΠϧͷ੍ݶΛ͢ΔVQMPBE@NBY@ fi MFTJ[F΋ ͋Γ·͢ɻ 

    ͜Ε͸QPTU@NBY@TJ[FVQMPBE@NBY@ fi MFTJ[FͰ͋Δඞཁ͕͋Γ ·͢ɻQPTU@NBY@TJ[F͕શମͷ1045ͷαΠζΛࢦఆ͢Δͷʹର͠ ͯɼVQMPBE@NBY@ fi MFTJ[F͸1045ͷதͷૹ৴͞ΕͨNVMUJQBSUΛ ࢀর͢ΔͨΊͰ͢ɻ  ͳ͓ɼ͜Ε͸ϑΝΠϧ͋ͨΓͰ͸ͳ͘ɼશͯͷϑΝΠϧͷ 
 αΠζͷ߹ܭͰ͢
  11. @2020 Torana, Inc. 1)1ͷϝϞϦͱม਺ͷؔ܎  ม਺ʹೖΔ஋͸ɼͦͷ··૝ఆͨ͠஋͕ೖΔΘ͚Ͱ͸ͳ͍  ϓϦϛςΟϒͳ஋Λࢦఆ͢Δ৔߹ͱɼؔ਺ݺͼग़͕͋͠Δ৔߹Ͱ͸·ͬͨ͘ ΋ͬͯҧ͏ͱ͍͏͜ͱ͕Θ͔Γ·͢ɻ 

    ྫ͑͹͜ΕΛJOUܕ΍BSSBZܕͷ஋ʹஔ͖׵͑ͨΒͱग़ྗ͞ΕΔ͜ͱ͕Θ ͔Γ·͢ɻͪͳΈʹNFNPSZ@HFU@QFBL@VTBHFͰ΋ಉ༷Ͱ͢ɻ  ͭ·Γɼؔ਺ݺͼग़͠͸߇͑ͯɼϓϦϛςΟϒܕͰͳΔ΂͘ॲཧ͢Δ΄͏͕ ;FOE.FNPSZ.BOBHFS্ͷϝϞϦ࢖༻ޮ཰͸Լ͕Δͱݴ͑·͢
  12. @2020 Torana, Inc. 1)1ͷϝϞϦͱม਺ͷؔ܎  ม਺ʹೖΔ஋͸ɼͦͷ··૝ఆͨ͠஋͕ೖΔΘ͚Ͱ͸ͳ͍  ϝϞϦফඅྔ͸  CZUFTͱͳΓɼCZUFT૿͑Δ͜ͱ͕Θ͔Γ·

    ͢ɻ  ࣍ݩ഑ྻɼ࣍ݩ഑ྻͱ૿΍͍ͯ͘͠ͱɼϝϞϦফඅྔ͕૿͍͖͑ͯ·͢  ഑ྻʹ͢Δ͚ͩͰ΋࢖༻ྔ͕มΘΔͱ͍͏͜ͱ͕Θ͔Γ·͢ɻ  จࣈྻܕ΍഑ྻܕͳͲ͕Ͳͷ͘Β͍ϝϞϦΛ࢖͏͔ʹ͍ͭͯ͸ 
 [FOE@UZQFTIʹهࡌ͞Ε͍ͯ·͢
  13. @2020 Torana, Inc. ($ͱऑࢀরʢ8FBLSFGʣ  ($ (BSCBHF$PMMFDUJPO ΨϕʔδίϨΫγϣϯ ͸ɼҰఆͷ৚݅Λຬͨͨ͠ ৔߹ʹɼม਺΍஋ͷϝϞϦղ์Λߦ͏΋ͷͰ͢

     ؆ܿʹݴ͑͹1)1ʹ͸SFGDPVOUͱݺ͹ΕΔ΋ͷ͕͋Γɼ͜ͷ஋Λ༻͍ ͯɼ($ͷର৅Ͱ͋Δ͔Ͳ͏͔Λ൑ఆ͍ͯ͠·͢  ࢀরIUUQTXXXQIQOFUNBOVBMKBGFBUVSFTHDSFGDPVOUJOH CBTJDTQIQ
  14. @2020 Torana, Inc. ($ͱऑࢀরʢ8FBLSFGʣ  ಛʹ໰୊ʹͳΓ΍͍͢ͷ͸॥؀ࢀরͰ͢ɻ  SFGDPVOU͕૿͍͑ͯͨ͘Ίɼ($ΛखಈͰൃಈ͠ͳ͍ͱϝϞϦղ์͕ߦΘ Εͳ͍͜ͱ͕Θ͔Γ·ͨ͠ɻ 

    ͱ͸͍͑ɼ1)1্Ͱ೚ҙͷλΠϛϯάͰ($Λ૸ΒͤΔͷ͸ਓྨʹ͸·ͩ ૣ͍ͨΊɼऑࢀরΛ࢖༻͢Δ͜ͱͰɼ॥؀ࢀরͷ໰୊ΛղܾͰ͖·͢
  15. @2020 Torana, Inc. 2NFNPSZ@MJNJUͷ஋ͷϕετϓϥΫςΟε   /ʢ/͸ࣗવ਺ʣ.#Λߟྀͯ͠NFNPSZ@MJNJUઃఆΛ͠·͠ΐ͏ɻ  ͦ΋ͦ΋NFNPSZ@MJNJUͷԼݶ͸.# ;&/%@..@$)6/,@4*;&ʹΑΔ

    ͳͷ ͰɼϝϞϦফඅྔ.#Ҏ಺Ͱॲཧ͕ॻ͚Δͱϕετ  ͜Ε͸NFNPSZ@MJNJUͷσϑΥϧτ.#Ͱ͋ͬͯ΋ɼॳճͷղ์͞ΕΔ஋ ͕.#ͱ͍͏͜ͱͰ͢ɻ  ྫ͑͹"84Λ࢖༻͍ͯ͠ΔํͰDMBSHFΛબఆ͍ͯ͠Δ৔߹͸ϝϞϦ͸(# ͱͳΔͷͰɼQIQGQNͳͲͷଞϓϩηεͷϝϞϦ࢖༻ྔ΋Ճຯ্ͨ͠Ͱ  . / / /͸ࣗવ਺ ͳͲͱݟੵ΋Δͱྑ͍Ͱ͢
  16. @2020 Torana, Inc. 2NFNPSZ@MJNJUҎ্ʹେ͖͍จࣈྻΛѻ͍͍ͨ৔߹  εϫοϓ΍όοϑΝΛ͏·͘ѻ͍·͠ΐ͏  ྫ͑͹NFNPSZ@MJNJUΛ.ͱࢦఆ͍ͯ͠Δ͕ɼ.ͷϑΝΠϧͷத਎Λ 
 ग़ྗ͍ͨ͠৔߹AFDIP

    fi MF@HFU@DPOUFOUT UFTU@IFBWZMPH AͷΑ͏ʹ 
 ۪௚ʹग़ྗ͢Δͱ"MMPXFENFNPSZTJ[FPG͕ग़ྗ͞ΕΔͨΊɼ 
 ࣍ͷϖʔδͷΑ͏ʹ෼ׂͯ͋͛͠Δ͜ͱͰϝϞϦফඅྔΛ཈͑Δ͜ͱ͕Մೳ Ͱ͢ɻ 

  17. @2020 Torana, Inc. 2NFNPSZ@MJNJUҎ্ʹେ͖͍จࣈྻΛѻ͍͍ͨ৔߹  1)1Λհͯ͠ը૾ΛCBTFͱͯ͠ग़ྗ͍ͨ͠ʜ  ϑΝΠϧαΠζ͕খ͍͞ɼ΋͘͠͸ఆ·͍ͬͯΔͷͳΒ͹ɼ·ͩڐ༰Ͱ͖Δ  ϑΝΠϧαΠζ͕େ͖͍৔߹͸Ұ޻෉͕ඞཁ

     CBTF@FODPEFCBTF@EFDPEF͸શͯͷจࣈྻΛ౉͢ඞཁ͕͋Δ   CZUFT͝ͱʹ෼ׂͯ͠CBTF@FODPEFͯ͠ରԠՄ  ࢀরIUUQTXXXQIQOFUNBOVBMKBGVODUJPOCBTF FODPEFQIQ
  18. @2020 Torana, Inc.  PC@TUBSUPC@HFU@DMFBOΛ࢖ͬͯग़ྗ 
 ͞ΕΔ΋ͷΛऔಘ͍ͨ͠  PC@TUBSUͷୈҾ਺ʹίʔϧόοΫΛࢦ ఆ͢Δ͜ͱ͕Ͱ͖·͢ɻ

     ࢦఆͨ͠νϟϯΫαΠζͷ஋͕ίʔϧ όοΫʹ౉͞ΕΔͷͰɼ͜ΕΛར༻͠ ͯɼผϑΝΠϧʹॻ͖ࠐΉ͜ͱͰ 
 ϝϞϦফඅྔΛ཈͑ΒΕ·͢ 2NFNPSZ@MJNJUҎ্ʹେ͖͍จࣈྻΛѻ͍͍ͨ৔߹
  19. @2020 Torana, Inc. 2($ͱͷ෇͖߹͍ํ  ($Λ͏·͘׆༻͢ΔͨΊʹ͸ɼͳΔ΂͘ม਺ͷϥΠϑαΠΫϧΛ୹͘͢Δ 
 ඞཁ͕͋Γ·͢  ͭ·Γ($͕ͪΌΜͱ૸ΔΑ͏ʹɼؔ਺ɾΫϥεͱͯ͠ఆٛ͢Δ

     ద੾ʹDMPOFΛͨ͠΄͏͕ɼ࣮͸ϝϞϦফඅྔ͕গͳͯ͘ࡁΉ  άϩʔόϧม਺΍੩తϓϩύςΟͳͲʹ͓͍ͯɼෆཁͰ͔ͭେ͖͍஋ͷ΋ͷͷ 
 ϥΠϑαΠΫϧΛৗʹߟ͑ΔΑ͏ʹ͢Δ  ॥؀ࢀর͕ͳ͍Α͏ͳίʔυͷॻ͖ํΛ͢Δ  ॥؀ࢀর͕ൃੜ͢Δ৔߹͸8FBLSFGΛ࢖͑ͳ͍͔ݕ౼Λ͢Δ
  20. @2020 Torana, Inc. 2($ͱͷ෇͖߹͍ํ  ($Λ͏·͘׆༻͢ΔͨΊʹ͸ɼͳΔ΂͘ม਺ͷϥΠϑλΠϜΛ୹͘͢Δ 
 ඞཁ͕͋Γ·͢  VOTFU͸ׂͱؾٳΊʹ͔͠ͳΒͳ͍ͳͱ͍͏ײ৮͸͋Γ·͢ɻ

    
 ʢࢲͷײ૝Ͱ͢ʣ  ྫ͑͹ɼઌ΄ͲͷྫͰDZDMF DZDMFΛVOTFUͯ͠΋"MMPXFENFNPSZTJ[FPGͱ ग़ΔͷͰ  ͨͩVOTFUͷ࣮ߦ࣌ϑοΫ͍ͯ͠Δॲཧ΋͋ΔͷͰɼVOTFUͱHD@DPMMFDU@DZDMFT͸ 
 ηοτͰ͋Δͱߟ͑ͨ΄͏͕ྑͦ͞͏Ͱ͢ɻ  ͦΕΑΓ΋ɼ($͕૸ΔλΠϛϯάɼ৔߹ʹΑͬͯ͸HD@DPMMFDU@DZDMFTΛ૸ΒͤΔλΠϛϯ άΛࣗ෼Ͱௐઅͨ͠΄͏͕ྑ͍ͱݴ͑ΔͰ͠ΐ͏