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

PHPを少し深堀るよ.pdf

 PHPを少し深堀るよ.pdf

Ea3572f7de8fb9c26bacf448d55170f8?s=128

tsuyoshi nakamura

January 16, 2019
Tweet

More Decks by tsuyoshi nakamura

Other Decks in Technology

Transcript

  1. PHPを少し深堀るよ 社内勉強会2019.1.16 @nakamura244

  2. agendaなんてもんは無いの で、ざっくばらんにいく

  3. makuakeのシステムを多くを 支えているPHPですが、 どのように動いているか概要 だけでも知っていますか?

  4. いきなり簡単にいうと

  5. 先人達の資料を拝借させても らいます

  6. https://www.slideshare.net/do_aki/php-sapi-zendengine3

  7. https://www.slideshare.net/do_aki/php-sapi-zendengine3

  8. https://www.slideshare.net/do_aki/php-sapi-zendengine3

  9. https://www.slideshare.net/do_aki/php-sapi-zendengine3

  10. CGI もう使う人いないと思うのでスルーする。 自分が初めてプログラムを書いた時はCGIをよく作ってお金も らってました。。。perlで書いてましたけど 1

  11. mod_php Nginxがまだ普及する前はよくあったパターン。 Apacheで動かすやつです 2

  12. php-fpm たぶん最近の主流。たぶん負荷によるベンチ マークするとたぶん大して変わらないけどこっ ちを選択した方が無難 3 mod_phpだと 1. PHPではない、static fileのresponseにphpをloadしてし まう

    2. Httpdプロセスのメモリ消費量が多分変わる 3. webサーバと分離できる事によるセキュリティ性の担保
  13. いずれにしてもSAPI module やSAPIの部分が色々と橋渡 しをしてるという感じ

  14. どのSAPIで動いているの?と 確認したい場合は

  15. None
  16. None
  17. たいがいはどれかです ▸ Apache ▸ FPM ▸ FastCGI ▸ CLI

  18. 少しネタ

  19. 最近、Japan teamが結 成された`Nginx`に関し てです

  20. None
  21. None
  22. Nginx unitというアプリケー ションサーバを提供してて、 PHPも動かせます。 Nginx Onlyで

  23. ん?。。。

  24. どうやってPHPを動かしてるんだ?

  25. None
  26. 初めて目にした しかもSAPI moduleの記載とかないし

  27. は? マニュアルにない...

  28. 色々調べる

  29. php_sapi_nameは `cli-server`何て返ってき た

  30. もうよくわからない どういう事だ.... ソースを追ってみる

  31. https://github.com/nginx/unit/blob/master/src/nxt_php_sapi.c#L85-L86

  32. 結構古い本ですが、こ の本を少し読むと追い やすい 日本語版を見た事はな い

  33. https://github.com/nginx/unit/blob/master/src/nxt_php_sapi.c#L85-L86 phpinfo()のAPI名はここ からきていた 内部的にはSAPIは cli-serverを使ってい るっぽい

  34. None
  35. でも実はそれだけではな い

  36. https://github.com/nginx/unit/blob/master/auto/modules/php

  37. https://github.com/nginx/unit/blob/master/auto/modules/php embed SAPIもつかう の?!

  38. None
  39. None
  40. 公式のinstallationでも embedパッケージを installしろってなってる

  41. たぶん、色々組み合わせた独 自SAPIで動かしてるだとおも う

  42. ベンチはとるとphp-fpmのが まだ高パフォーマンスらしい

  43. 俺が早くしてやるという方、改 善が好きな方はチャンスです

  44. Webからリクエストを受けて phpが動くまでがざっくり説明 した 時間があれば次

  45. 自分達が書いたPHPがサー バの中でどう処理されてるか について

  46. <?php echo “hello”; Lexing Compilation Execution(on zend) hello Parsing 字句解析

    構文解析 コンパイル 実行 opcode|opcache
  47. 各所深いので色々しゃべりた い気もするが、多分時間ない よね。

  48. 時間があれば part2

  49. None
  50. None
  51. 分時間ないよね。やめときま す

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