前言:
了解PHP的朋友都应该知道,性能一直是PHP被鄙视的地方,虽然PHP7.0以后,性能又上了一个台阶。但是还有很多只了解些皮毛就出来秀优越的朋友,说什么php不支持多线程。搞定不了大并发。小打小闹还行,大项目php胜任不了。今天我不谈论语言之间的优势劣势,只说说PHP到底能不能搞定大并发
php-fpm生命周期
php-fpm生命周期
首先用户请求到像Apache或者Nginx这样的Web Service。如果是请求非静态数据,比如动态页面,或者是数据接口。就会通过fastcgi来将请求转发到给php。这里fastcig是一种协议,它会将nginx请求中获得的数据处理成php能处理的格式,并且还会将数据放入php的全局变量中,比如$_GET,$_POST。(这里注意PHP模块不一定非要和nginx模块放在一个服务器上,nginx后面的php模块也不是只能有一个)
那标题中提到的php-fpm是什么东西?
PHP-FPM(FastCGI Process Manager) 从名字中可以看出,fpm是一款进程管理器。这个程序启动之后就会有个master进程,这个进程会去初始化php.ini的配置信息。然后master会启动多个worker进程等待从nginx转发的请求。当空闲时,master会销毁一些worker进程,来节省资源。当work进程不够用的时候