您的位置:首页 > 运维架构 > Nginx

[置顶] Nginx+PHP-FPM详解

2018-02-25 10:51 176 查看

Nginx+PHP-FPM详解


什么是php-fpm?

PHP- FPM是为PHP内核编写的补丁,用来根据需要处理FastCGI进程的启动,停止以及重启。这是非常关键的功能,因为nginx只能通过FastCGI 实现同PHP的接口。nginx不能像Apache那样把所有的PHP环境加载到自身。通俗点说,php-fpm就是php和nginx通信的桥梁! 


Nginx的优点

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 服务器。
Nginx可以做反向代理服务器
较低的内存占用率(因为nginx单独运行时不用加载整个PHP环境)。
轻松地管理用户权限( 因为PHP可以在你的服务器进程中管理不同的用户)。
当PHP崩溃时,nginx可以照常运行
抗高并发,nginx 处理请求是异步非阻塞的

Nginx静态处理能力是Apache的3倍以上


PHP-FPM

php-fpm   全称: php-fastcgi process manager(PHP的fastCGI管理器)
php-fpm是fastcgi的实现,并提供了进程管理功能。进程包含了master和worker两种进程。
Nginx使用这些php-fpm进程来和PHP进行通信,你可以理解把php-fpm理解为php解释器。

和传统的php-cgi的解释器不同,php-fpm实现了fastCGI协议,而且还新增了不少特性。比如php-fpm能够平滑重启php环境配置:我们知道在修改了php.ini之后,wamp和phpstudy需要重启服务器才能重新加载php.ini里的内容。如果是php-fpm,则不用重启web服务器,原先正在工作的php-fpm继续工作,等原先工作的php-fpm完成自己的工作后,就结束掉自己。新增加的php-fpm就使用修改后的php.ini即可

总结

php-fpm实现了fastcgi的管理器。常驻内存,负责管理各个php-cgi进程。可以提升运行效率,实现平滑重启。
master进程只有一个,负责监听端口,接收webserver请求;然而worker进程有多个,每个进程都嵌入了php解释器,是php代码真正执行的地方。php-fpm默认9000端口

php-fpm相关的命令

sudo nginx -s reload 
sudo php-fpm 
ps -ef | grep fpm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: