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

ご静聴ありがとうございました