phpはなんとなく、mod apache と php-fpm があって、とりあえず php-fpm 使うか、といった適当な認識でいっていたが、いい加減どういうふうにスクリプトが実行されるのか知りたくなったのでメモ。
"SAPI" について知る
ちょうど最近良い資料があがっていたのでこれで学んだ
「PHP と SAPI と ZendEngine3 」についてを #phperkaigi で話してきたこと - do_akiの徒然想記
(引用元:「PHP と SAPI と ZendEngine3 」についてを #phperkaigi で話してきたこと - do_akiの徒然想記)
なるほど。
この資料はほんとうにすごい、extension と zend_extension
の違いとか今はじめて知った。
FastCGI について知る
従来の CGI はリクエスト毎に process を作っていたのに対して、最初から一定数用意して、使いまわす。そうすることで process 開始時のオーバーヘッドをなくす。
(引用元:「PHP と SAPI と ZendEngine3 」についてを #phperkaigi で話してきたこと - do_akiの徒然想記)
Instead of creating a new process for each request, FastCGI uses persistent processes to handle a series of requests. These processes are owned by the FastCGI server, not the web server.
具体的な C コードをまじえた CGI と FastCGI の仕組みの比較が次のサイトにあって参考になった。
FastCGI 自体はプロトコルなので、言語に依存していない。さまざまな言語の binding がある
FastCGI can be implemented in any language that supports network sockets. (Since "FastCGI is a protocol, not an implementation," it is not tightly bound to any language at all.) APIs exist[17] for: