IT技术博客大学习 共学习 共进步

Nginx+FastCgi+Php 的工作机制

技术 总结 记录 生活 工作 2011-06-01 13:41:04 浏览 10,081 次

    近半年一直在做服务迁移的事情,现在遇到一个问题,需要将WebServer从Nginx替换为Apache.

    今天查阅了相关资料:Nginx+FastCgi+Php 的工作机制.

    FastCgi是通讯协议,可以通过Unix套接字或者Tcp进行通讯.Nginx内置基本模块FastCgi模块(控制缓存区大小等功能)

    Nginx通过FastCgi技术和外部的服务或者工具一起工作.Php自己能够运行一个Fastcgi应用程序(php-fcgi)..

    Nginx通过FastCgi协议将请求发送给Php Fastcgi应用程序执行

    编译Php的时候配置--enable-fastcgi.可以通过二种方法运行FastCgi Server

    第一种就是将php编译进FastCgi Server.另外就是借助第三方的wrapper(比如Lighttpd的spawn-fcgi),稳定性更好.

    最后需要配置Nginx将请求发送之Php的本地端口中.Nginx通过Upstream异步的处理后端的请求.总体来说对比Apache+Php的方式更能节省内存.

    而目前PHP-FPM是目前最好的管理PHP的FastCGI处理器.在高版本的Php中已经编译进内核了.

    主要特点就是能动态负载均衡php-fcgi,更好的切换php-fcgi进程.更好的启动和重启php worker(不丢失请求).能够以不同的用户,权限启动.

    而未来支持的特性包括

    1:编译进PHP内核(已完成)

    2:处理模型:自适应的进程swawning.更好的利用多核Cpu

    3:配置文件的定制化

    4:内部处理基于libevent(有必要吗?)

    5:per-pool :定制不通的pool基于不同的PHP.in

    6:更多的工具:比如通过syslog记录日志,动态显示Php处理的状态(Mysql的show proceslist)

    可以查看http://redmine.lighttpd.net/projects/spawn-fcgi/ 的代码实现

建议继续学习

  1. 配置Nginx+uwsgi更方便地部署python应用 (阅读 106,822)
  2. 搜狐闪电邮箱的 Nginx/Postfix 使用模式 (阅读 33,760)
  3. 解析nginx负载均衡 (阅读 16,420)
  4. 我的PHP,Python和Ruby之路 (阅读 12,980)
  5. Nginx模块开发入门 (阅读 11,040)
  6. 检查nginx配置,重载配置以及重启的方法 (阅读 10,680)
  7. Cacti 添加 Nginx 监控 (阅读 10,361)
  8. PHP程序的执行流程 (阅读 9,900)
  9. 奇怪的 Nginx 的 upstream timed out 引起响应 502 (阅读 9,820)
  10. nginx的配置文件 (阅读 9,780)