PHPを少し深堀るよ.pdf
by
tsuyoshi nakamura
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
PHPを少し深堀るよ 社内勉強会2019.1.16 @nakamura244
Slide 2
Slide 2 text
agendaなんてもんは無いの で、ざっくばらんにいく
Slide 3
Slide 3 text
makuakeのシステムを多くを 支えているPHPですが、 どのように動いているか概要 だけでも知っていますか?
Slide 4
Slide 4 text
いきなり簡単にいうと
Slide 5
Slide 5 text
先人達の資料を拝借させても らいます
Slide 6
Slide 6 text
https://www.slideshare.net/do_aki/php-sapi-zendengine3
Slide 7
Slide 7 text
https://www.slideshare.net/do_aki/php-sapi-zendengine3
Slide 8
Slide 8 text
https://www.slideshare.net/do_aki/php-sapi-zendengine3
Slide 9
Slide 9 text
https://www.slideshare.net/do_aki/php-sapi-zendengine3
Slide 10
Slide 10 text
CGI もう使う人いないと思うのでスルーする。 自分が初めてプログラムを書いた時はCGIをよく作ってお金も らってました。。。perlで書いてましたけど 1
Slide 11
Slide 11 text
mod_php Nginxがまだ普及する前はよくあったパターン。 Apacheで動かすやつです 2
Slide 12
Slide 12 text
php-fpm たぶん最近の主流。たぶん負荷によるベンチ マークするとたぶん大して変わらないけどこっ ちを選択した方が無難 3 mod_phpだと 1. PHPではない、static fileのresponseにphpをloadしてし まう 2. Httpdプロセスのメモリ消費量が多分変わる 3. webサーバと分離できる事によるセキュリティ性の担保
Slide 13
Slide 13 text
いずれにしてもSAPI module やSAPIの部分が色々と橋渡 しをしてるという感じ
Slide 14
Slide 14 text
どのSAPIで動いているの?と 確認したい場合は
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
たいがいはどれかです ▸ Apache ▸ FPM ▸ FastCGI ▸ CLI
Slide 18
Slide 18 text
少しネタ
Slide 19
Slide 19 text
最近、Japan teamが結 成された`Nginx`に関し てです
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
Nginx unitというアプリケー ションサーバを提供してて、 PHPも動かせます。 Nginx Onlyで
Slide 23
Slide 23 text
ん?。。。
Slide 24
Slide 24 text
どうやってPHPを動かしてるんだ?
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
初めて目にした しかもSAPI moduleの記載とかないし
Slide 27
Slide 27 text
は? マニュアルにない...
Slide 28
Slide 28 text
色々調べる
Slide 29
Slide 29 text
php_sapi_nameは `cli-server`何て返ってき た
Slide 30
Slide 30 text
もうよくわからない どういう事だ.... ソースを追ってみる
Slide 31
Slide 31 text
https://github.com/nginx/unit/blob/master/src/nxt_php_sapi.c#L85-L86
Slide 32
Slide 32 text
結構古い本ですが、こ の本を少し読むと追い やすい 日本語版を見た事はな い
Slide 33
Slide 33 text
https://github.com/nginx/unit/blob/master/src/nxt_php_sapi.c#L85-L86 phpinfo()のAPI名はここ からきていた 内部的にはSAPIは cli-serverを使ってい るっぽい
Slide 34
Slide 34 text
No content
Slide 35
Slide 35 text
でも実はそれだけではな い
Slide 36
Slide 36 text
https://github.com/nginx/unit/blob/master/auto/modules/php
Slide 37
Slide 37 text
https://github.com/nginx/unit/blob/master/auto/modules/php embed SAPIもつかう の?!
Slide 38
Slide 38 text
No content
Slide 39
Slide 39 text
No content
Slide 40
Slide 40 text
公式のinstallationでも embedパッケージを installしろってなってる
Slide 41
Slide 41 text
たぶん、色々組み合わせた独 自SAPIで動かしてるだとおも う
Slide 42
Slide 42 text
ベンチはとるとphp-fpmのが まだ高パフォーマンスらしい
Slide 43
Slide 43 text
俺が早くしてやるという方、改 善が好きな方はチャンスです
Slide 44
Slide 44 text
Webからリクエストを受けて phpが動くまでがざっくり説明 した 時間があれば次
Slide 45
Slide 45 text
自分達が書いたPHPがサー バの中でどう処理されてるか について
Slide 46
Slide 46 text
Slide 47
Slide 47 text
各所深いので色々しゃべりた い気もするが、多分時間ない よね。
Slide 48
Slide 48 text
時間があれば part2
Slide 49
Slide 49 text
No content
Slide 50
Slide 50 text
No content
Slide 51
Slide 51 text
分時間ないよね。やめときま す
Slide 52
Slide 52 text
ご静聴ありがとうございました