php-fpm

PHP版本5到7的源码编译安装

≡放荡痞女 提交于 2020-04-06 06:54:39
安装成功的样子: [root@localhost /]# systemctl status php-fpm ● php-fpm.service - php-fpm Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2020-04-02 15:22:00 CST; 2 days ago Main PID: 6251 (php-fpm) Tasks: 4 CGroup: /system.slice/php-fpm.service ├─2298 php-fpm: pool www ├─6251 php-fpm: master process (/opt/php/etc/php-fpm.conf) ├─6474 php-fpm: pool www └─9585 php-fpm: pool www Apr 02 15:22:00 localhost systemd[1]: Starting php-fpm... Apr 02 15:22:00 localhost systemd[1]: Started php-fpm. [root@localhost /]# [root@localhost /

nginx + php-fpm 运行原理

眉间皱痕 提交于 2020-04-04 12:41:03
一、关于nginx 1.1 简单认知 我们都知道nginx 是web服务器。 也知道 用户访问时通过ip和端口访问 nginx。 那么nginx 是如何 通过php 获取数据并返回数据的呢? 1.2 代理与反向代理 1.2.1 正向代理 : 访问google.com 如上图,因为google 被墙,我们需要vpn翻墙才能访问google.com vpn 对于“我们”来说,是可以被感知的(我们连接了vpn) vpn 对于“google服务器”来说,是不可感知的(google 只知道有http 请求过来)。 1.2.2 反向代理 如上图 ,我们访问baidu.com 的时候,baidu有一个代理服务器,通过这个代理服务器,可以做负载均衡,路由到不同的server 代理服务器 对于 “我们” 来说,是不可感知的(我们只能感知到访问的是百度的服务器,不知道中奖还有代理服务器来在负载均衡)。 代理服务器,对于“server1,server2 server3” 是可感知的(代理服务器负载均衡路由到不同的server) 1.2.3 总结 说白了:“正向”、“反向” 是相对于人的感知来说的。 人能感受到的就是正向代理,人感受不到的就是反向代理。 二、php-fpm 2.1 cgi 协议 `在说php-fpm 之前,先了解一下,什么的是cgi 2.1.1 cgi 百度百科的解释: cgi 即

php-fpm开启报错-ERROR: An another FPM instance seems..

ⅰ亾dé卋堺 提交于 2020-04-01 14:07:04
在部署项目的时候遇到了 An another FPM instance seems to already listen on /tmp/php-cgi.sock 解决方法: netstat -ant | grep 9000 //查看启动进程,发现没启动成功 查看php-fpm.conf里面的配置: vim /usr/local/php/etc/php-fpm.conf [www] listen = /tmp/php-cgi.sock //注意这里,要与下面的一致 listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www 此时根据配置文件的listen地址做对应的修改: vim /usr/local/nginx/conf/nginx.conf location ~ [^/]\.php(/|$) { fastcgi_pass unix:/tmp/php-cgi.sock; //把127.0.0.1:9000改为此行 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

optimize PHP-FPM优化

余生颓废 提交于 2020-03-31 16:11:36
php-fpm进程pid pids=$(ps aux | grep ${process} | grep -v "grep" | awk '{print $2}') php-fpm 关闭: kill -INT 'cat /usr/local/php/var/run/php-fpm.pid' php-fpm 重启: kill -USR2 'cat /usr/local/php/var/run/php-fpm.pid' php-fpm优化方法 php-fpm存在两种方式,一种是直接开启指定数量的php-fpm进程,不再增加或者减少; 另一种则是开始时开启一定数量的php-fpm进程,当请求量变大时,动态的增加php-fpm进程数到上限,当空闲时自动释放空闲的进程数到一个下限。 这两种不同的执行方式,可以根据服务器的实际需求来进行调整。 要用到的一些参数,分别是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers。 pm表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。 pm.max_children:静态方式下开启的php-fpm进程数量,在动态方式下他限定php-fpm的最大进程数(这里要注意pm.max_spare

PHPFastCGI进程管理器PHP-FPM详解

半城伤御伤魂 提交于 2020-03-31 16:07:56
PHP-FPM是一个PHPFastCGI进程管理器,是只用于PHP的。 PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。 现在我们可以在最新的PHP 5.3.2的源码树里下载得到直接整合了PHP-FPM的分支,据说下个版本会融合进PHP的主分支去。相对Spawn-FCGI,PHP-FPM在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行监控,而PHP-FPM则没有这种烦恼。 PHP5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。 在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。 使用PHP-FPM来控制PHP-CGI的FastCGI进程 /usr/local/php/sbin/php-fpm{start|stop|quit|restart|reload|logrotate} --start 启动php的fastcgi进程 --stop 强制终止php的fastcgi进程 --quit 平滑终止php的fastcgi进程 --restart

php-fpm配置参数.md

非 Y 不嫁゛ 提交于 2020-03-31 14:12:29
Global Options pid string PID文件的位置。默认为空。默认路径放在/usr/local/php-fpm/var。 error_log string 错误日志的位置。默认:安装路径 #INSTALL_PREFIX#/log/php-fpm.log。 log_level string 错误级别。可用级别为:alert(必须立即处理),error(错误情况),warning(警告情况),notice(一般重要信息),debug(调试信息)。默认:notice。 emergency_restart_threshold int 如果子进程在 emergency_restart_interval 设定的时间内收到该参数设定次数的 SIGSEGV 或者 SIGBUS退出信息号,则FPM会重新启动。0 表示“关闭该功能”。默认值:0(关闭)。 emergency_restart_interval mixed emergency_restart_interval 用于设定平滑重启的间隔时间。这么做有助于解决加速器中共享内存的使用问题。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭)。 process_control_timeout mixed 设置子进程接受主进程复用信号的超时时间。可用单位:s(秒),m(分),h(小时)或者

FastCgi与PHP-fpm关系

◇◆丶佛笑我妖孽 提交于 2020-03-31 13:31:34
刚开始对这个问题我也挺纠结的,看了《HTTP权威指南》后,感觉清晰了不少。 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。 web server(比如说nginx)只是内容的分发者。比如,如果请求 /index.html ,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是 /index.php ,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。Nginx会传哪些数据给PHP解析器呢?url要有吧,查询字符串也得有吧,POST数据也要有,HTTP header不能少吧,好的,CGI就是规定要传哪些数据、以什么样的格式传递给后方处理这个请求的协议。仔细想想,你在PHP代码中使用的用户从哪里来的。 当web server收到 /index.php 这个请求后,会启动对应的CGI程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。 好了,CGI是个协议,跟进程什么的没关系。那fastcgi又是什么呢?Fastcgi是用来提高CGI程序性能的。 提高性能

fast-cgi & php-fpm 等的理解

倾然丶 夕夏残阳落幕 提交于 2020-03-31 13:29:00
原文地址: https://segmentfault.com/q/1010000000256516 网上有的说,fastcgi是一个协议,php-fpm实现了这个协议; 有的说,php-fpm是fastcgi进程的管理器,用来管理fastcgi进程的; 有的说,php-fpm是php内核的一个补丁; 有的说,修改了php.ini配置文件后,没办法平滑重启,所以就诞生了php-fpm; 还有的说PHP-CGI是PHP自带的FastCGI管理器,那这样的话干吗又弄个php-fpm出来,我就更晕了; 发个贴,想听听大家的理解,网上的我都已经看了个遍,因为我查了一周了,哈哈,所以想听听原创的理解。 ============================================ 刚开始对这个问题我也挺纠结的,看了《HTTP权威指南》后,感觉清晰了不少。 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。 web server(比如说nginx)只是内容的分发者。比如,如果请求 /index.html ,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是 /index.php ,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理

PHP-FPM配置与调优

那年仲夏 提交于 2020-03-31 06:32:09
PHP-FPM是啥? PHP-FPM是一个PHP FastCGI的管理器,它实际上就是PHP源代码的补丁,旨在将FastCGI进程管理引进到PHP软件包中。 CGI是啥? CGI全称“公共网关接口”(Common Gateway Interface),是HTTP服务器与其它机器上的程序进行通信的接口,其程序须运行在网络服务器上。 CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。 FastCGI是啥?优缺点。 FastCGI是一个常驻型的CGI,它可以一直执行,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute模式)。它还支持分布式的运算,即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。 FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。我们知道,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保存在内存中并接受FastCGI进程管理器调度,那么就可以提供良好的性能、伸缩性等。 因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。 FastCGI工作原理(配置数量与内存大小关联)

php后端模式,php-fpm以及php-cgi, fast-cgi,以及与nginx的关系

与世无争的帅哥 提交于 2020-03-31 06:29:59
关于cgi是什么,fast-cgi是什么,php-cgi是什么,fast-cgi是什么,下面这篇讲的很清楚: https://segmentfault.com/q/1010000000256516 另外,nginx本身不处理php请求,它是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx。 http://www.nginx.cn/231.html 先看第一篇 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。 web server(比如说nginx)只是内容的分发者。比如,如果请求 /index.html ,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是 /index.php ,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。Nginx会传哪些数据给PHP解析器呢?url要有吧,查询字符串也得有吧,POST数据也要有,HTTP header不能少吧,好的,CGI就是规定要传哪些数据、以什么样的格式传递给后方处理这个请求的协议。仔细想想,你在PHP代码中使用的用户从哪里来的。 当web server收到 /index.php 这个请求后