cgi php-cgi,PHP底层原理
来源:互联网 发布:域名国外备案 编辑:程序博客网 时间:2024/05/16 08:45
一 概念:
cgi
用于管理和调度php-cgi进程,类似的有spawn-fcgi
二 原理
先了解一下普通cgi的工作流程:
web server收到用户请求,并把请求提交给cgi程序,cgi程序根据请求提交的参数作相应处理,然后输出标准的html语句返回给web server,web server再返回给客户端,这就是普通cgi的工作原理。
从上面看,cgi所要实现的不过是动态网页而已,这种处理方式的特点就是每接到一个请求,web server都要fork出一个单独的cgi程序的进程来处理,这种方式的好处是把web server和具体的程序处理独立开来,结构清晰,可控性强,同时缺点就是如果在高访问需求的情况下,cgi的进程fork就会成为很大的服务器负担,想象一下数百个并发请求导致服务器fork出数百个进程就明白了。这也是为什么cgi一直背负性能低下,高资源消耗的恶名的原因。
相应的有问题就有解决方案,目前流行的方案就是使用模块设计,基本上目前的web server都有相应的模块机制来扩充它的功能,只要按照其设计规范设计出来的模块,就能插入到web server自身的进程处理,因此性能有很大改观,例如IIS的isapi,apache的dso。但是,这种方法也不是没有缺点的,例如对于不同的web server,要按照不同标准开发,无法做到webserver无关性;例如这将输入验证的工作转交给了web server,没办法自由处理;例如一旦出现问题将影响整个web server处理流程;例如插入web server进程导致的无法以多用户标示运行,无法处理虚拟主机权限等。
所幸我们还有另外的选择,这就是fastcgi。fastcgi是基于cgi架构的扩展,他的核心思想就是在web server和具体cgi程序之间建立一个智能的可持续的中间层,统管cgi程序的运行,这样web server只需要将请求提交给这个层,这个层再派生出几个可复用的cgi程序实例,然后再把请求分发给这些实例,这些实例是可控的,可持续,可复用的,因此一方面避免了进程反复fork,另一方面又可以通过中间层的控制和探测机制来监视这些实例的运行情况,根据不同的状况fork或者回收实例,达到灵活性和稳定性兼得的目的。
三 PHP底层工作原理
http://blog.csdn.net/21aspnet/article/details/6973405
http://www.nowamagic.net/librarys/veda/detail/102/- cgi php-cgi,PHP底层原理
- PHP CGI
- cgi、fast-cgi、php-fpm
- CGI FAST-CGI PHP-FPM
- php-cgi php-fpm
- FastCGI(php-cgi)工作原理
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 什么是CGI、FastCGI、PHP-CGI、PHP…
- CGI,FastCGI,PHP-CGI与PHP-FPM
- CGI、FastCGI、php-cgi、php-fpm
- php,CGI,Fast-Cgi,php-fpm介绍
- 关于cgi、FastCGI、php-fpm、php-cgi
- 什么是CGI、FastCGI、php-cgi、php-fpm?
- 什么是CGI、FastCGI、php-cgi、php-fpm?
- 关于cgi、FastCGI、php-fpm、php-cgi
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 谈谈 CGI、FastCGI、PHP-CGI、PHP-fpm
- 什么是CGI、FastCGI、php-cgi、php-fpm?
- 获取JAVA项目根目录
- Ubuntu 系统 Update-rc.d 命令
- 单向链表删除节点
- struts2使用session 的三种方式
- 32位和64位系统区别及int字节数
- cgi php-cgi,PHP底层原理
- opencv之莫名其妙的条件宏ICV_DEF_FIND_STUMP_THRESHOLD_SQ解释~
- Ubuntu Server下建立VPN服务器的方法
- LightOJ1010---Knights in Chessboard (规律题)
- C# 判断系统空闲(键盘、鼠标不操作一段时间)
- 引用的意义与本质
- jQuery表单验证插件jQueryValidationEngine使用
- Access violation reading location 0xD15965C4
- 第十四周项目4(1)-处理C++源代码的程序