ϋϜελʔΛࢹ͢ΔγεςϜΛRaspberry Pi ͱ PHP ͷ Swoole Ͱ࡞ͬͨ2019/04/24PHPษڧձ@౦ژΊΓʙ
View Slide
ͩΕʁ
ΊΓʙ (@m3m0r7)גࣜձࣾ GameWith Ͱ αʔόʔαΠυ݉ϑϩϯτΤϯυΤϯδχΞͱͯ͠ಇ͍ͯ·͢ɻϐʔΤΠνϐʔνϣοτσΩϧ2019 ͷ 5 ݄ʹΊ·͢ɻస৬׆ಈதͰ͢ɻ
͏ͪͷϋϜελʔͷ͝հ
Lily (ϦϦΟ)ੑผɿঁͷࢠੜɿ2018 11 ݄͖ͳ৯ɿ Ϗεέοτ, Ϧϯΰͷ͔͡Γݏ͍ͳ৯ɿསͷ͔͡ΓझຯɿڅਫثͷϊζϧΛΨδΨδ͢Δ͜ͱɻΔΑΓ͖Έ͍ͨͰ͢
Έͳ͞ΜɺSwoole Λͬͨ͜ͱ͋Γ·͔͢ʁ
ͦͯ͠ɺRaspberry Pi Λͬͨ͜ͱ͋Γ·͔͢ʁ
ϊʔϚϧΧϝϥϞδϡʔϧ ؒ༻ΧϝϥϞδϡʔϧ
͏ͪͷ Raspberry Pi Ͱ͢
͏ͪͷϋϜελʔઐ༻ͷϥοΫͰ͢
͜ͷ͕ࠓճͷ Raspberry Pi Λ͓͍ͯΔͱ͜ΖʹͳΓ·͢
ٕज़ελοΫ
- Raspbian (Raspberry Pi)- PHP 7.3- Swoole v4- Python 3- React.js (+ Gulp)ओʹ͜ͷ 5 ͭ
අ༻͍͘Βͩͬͨͷ͔ʁ
- Raspberry Pi 3 Model B * 2 ≒ 5,200 * 2 ≒ 10,000 ԁ- ΧϝϥϞδϡʔϧ * 2 ≒ 5,000 * 2 ≒ 10,000 ԁ- VPS (ࠓճ ConoHa) ≒ 2,500/m ԁ- ϧʔλʔ ≒ 15,000 ԁΠχγϟϧίετ ≒ 37,500 ԁϥϯχϯάίετ ≒ 2,500 ԁ
ׂͱ͍͍ஈ͠·͢
ϨΠςϯγʁ
ମײ 0.5 ඵ͘Β͍
αʔόʔͷߏ
ࣗ LAN VPS (ConoHa)PiCameraϞδϡʔϧ4 byte ͷunsigned long ͳαΠζσʔλ +picamera.start_recording (mjpeg)ϊʔϚϧΧϝϥ ͔Β TCP Ͱૹ৴φΠτΧϝϥ͔Β TCP Ͱૹ৴
ࣗ LAN ଆͲ͏ͳ͍ͬͯΔͷ͔ʁ
- ͦͦࣗͷωοτϫʔΫͷϙʔτ։͚ͨ͘ͳ͔ͬͨ- தܧαʔόʔ͓͚ສࣄղܾʂ͘͞Βͷ VPS ͷ౦ژϦʔδϣϯ͕ۭ͍ͯͳ͔ͬͨͷͰɺࠓճಅͷ ConoHa ΛνϣΠε- ϧʔλʔΛ৽ௐͯ͠࠷ߴͷڥʹͨ͠- Python3 ͷ picamera Λͬͯແݶʹ VPS (ConoHa) ʹૹΓ͚͍ͭͯ·͢
VPS ଆͲ͏ͳ͍ͬͯΔͷ͔ʁ
- PHP ͷ Swoole ͷ Coroutine Λͬͯ Raspberry Pi ͔Βͷσʔλͷड৴༻αʔόʔ, ConoHa σʔλΛૹΔͨΊͷૹ৴༻αʔόʔΛ༻ҙ- ͨͬͨ͜Ε͚ͩʂ Simple is best.
※ Ұ෦ͷίʔυ
࣮ࡍͷϓϩμΫτͷը໘
ετϦʔϛϯάͷςετ
Ͳ͏͔ͬͨʁ
ΧϝϥͷԼͰखΛৼΓͭͭϐʔεΛ͢Δ
- mjpeg Motion JPEG ͷུɻ- H.264ݕ౼ͨ͠ͷͰ͕͢ɺ ffmpeg Λ௨͢ͱϨΠςϯγ͕ 5 ඵ͘Β͍૿͑Δ͕͋Γ, mjpeg ΛνϣΠε- MIME type multipart/x-mixed-replace Ͱৗ࣌ίωΫγϣϯΛషΔ- (ͳͷͰɺϒϥβͷλϒϩʔσΟϯάதͷ··)- ϨΠςϯγ ମײ 0.5 ඵ͘Β͍ɻͦ͜ΒΜͷͷΑΓૣ͍- ΊͬͪΌ͵Δ͵Δʹಈ͘
Swoole ΛͬͯΈͯͷײ
- PHP Ͱඇಉظॲཧ͑Δͷਆʂ- Ϗϧυ࣌ʹ —enable-maintainer-zts Λ͠ͳ͍͍ͯ͘ͷͰɺಋೖͷϋʔυϧ͕͍ ( phpize ͚ͩͰ͍͚Δ )- Atomic ͕ͤΊͯ serializable ͳͷ͑ΔΑ͏ʹͳΔͱͳ͓خ͍͠- ݱঢ়Ͱ͖ͳ͍ͷͰɺ Channel ͰແཧΓ Coroutine ؒͷσʔλͷड͚͠Λ͍ͯ͠·͢ɻ
՝
ೋޙʹεΫϦϓτ͕མͪΔ
ϩάऔͬͯͳ͍ͷͰམͪͨݪҼ͕Θ͔Βͳ͍ʗ(^o^)ʘ
Ҏ্Ͱ͢
THANK YOU FOR YOUR LISTENING !!