一般的网页服务架构是这样的:
浏览器
|
网站服务器(apache, nginx等) 只支持静态内容(html, 图片,文件)
| \
CGI Fast CGI (两种编程规范,按照特定的方式读输入,写输出。也叫协议。)
| |
任何语言 任何语言 (按照上面的规范来写代码,提供动态内容,比如读写数据库,根据数据库展示不同内容)
任何语言中就包括了php
其中CGI的方式就是,网站服务器会把CGI程序当成普通的程序一样调用,然后把CGI程序的标准输出流作为内容返回给浏览器。每来一个请求,就要启动一个CGI程序。所以php可以直接加上可执行属性(仅linux),就可以让网站服务器调用。缺点是响应慢而且占用内存多(每次启动程序的消耗较大)。
而FastCGI的方式就是,网站服务器通过socket跟FastCGI程序获取输入输出。FastCGI程序会启动一个程序一直运行并监听端口。每来一个请求,不需要再启动新的程序。php提供了php-fpm这个东东来监听端口。
CGI是通用网关协议,是开发动态网页的一个标准,遵循这个标准就可以用BAT、CMD、sh、PERL、C、C++、PERL以及PHP等语言编写程序处理网页请求和返回数据到客户端浏览器。