nginx与php(fastcgi)

fastcgi是与语言无关的,可伸缩架构的cgi开放扩展,主要是将cgi解释器保持在内存中从而获取较好的性能

cgi的反复加载是cgi功能低的主要原因,若cgi解释器保持在内存中并接受fastcgi进程管理调度器,则可以

保持良好的性能,伸缩性,fail-over性能等

fastcgi的工作原理:

1)fastcgi程序自身初始化,并启动多个cgi解释器进程(多个php-cgi进程)等待webserver的连接,这里以

php-fpm进程管理器来启动多个php-cgi fastcgi进程,启动php-cgi fastcgi进程时,可以配置以tcp和

unix套接字两种方式启动

2)请求到达web服务器(nginx)时,web server将请求采用tcp或者unix套接字的方式转发到fastcgi主进程,

fastcgi主进程选择并连接到一个cgi解释器(主进程),web server将cgi环境变量和标准输入发送到fastcgi

的子进程php-cgi

3)fastcgi子进程完成处理后将标准输出和错误信息从同一连接返回到web server,当fastcgi子进程关闭连

接时,请求就处理完成,fastcgi子进程继续等待并处理来自fastcgi进程管理器的下一个连接,而在普通的cgi

模式里,php-cgi到这里就退出了

所以,普通的cgi都是每次请求要重新解析一次php.ini 重新载入全部扩展 重新初始化全部数据结构,效率会很低

使用fastcgi只需要在进程启动时,加载一次,还有一个额外的好处,持续的数据库连接可以工作


fastcgi的优点:

1)php脚本运行更快,php解释器被载入内存而无需每次从存储器加载

2)需要使用的系统资源更少,因为不需要反复加载cgi

3)无需改动现有代码,运行在apache+php上的程序无需更改就可以使用php的fastcgi


在不停止nginx服务的情况下平滑变更nginx配置

1)修改nginx的配置后使用 /usr/local/etc/nginx/nginx.conf -t来测试配置文件是不是有语法错误

2)使用 ps -ef|grep "nginx: master process" | grep -v "grep" | awk -F ' ' {print $2}

  来得到nginx的主进程号

kill -hup nginx主进程号 平滑重启nginx

3)或者直接使用 kill -HUP `cat /usr/local/var/run/nginx.pid`

  更近一步,不太清楚pid文件在哪儿时,可以使用 kill -HUP `locate nginx.pid | xargs cat`


编写每天定时切割nginx日志的脚本在之前的文章有写过,就不再重复,给出链接^^

http://blog.csdn.net/njys1/article/details/54883993



`



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值