php-fpm重启

基础概念PHP-FPM、FastCGI和CGI

寵の児 提交于 2020-01-26 02:42:40
在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM、FastCGI和CGI 这几个概念。如果对它们一知半解,很难搭建出高性能的服务器。接下来我们就以图形方式,解释这些概念之间的关系。 基础 在整个网站架构中,Web Server(如Apache)只是内容的分发者。举个栗子,如果客户端请求的是 index.html,那么Web Server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。 如果请求的是 index.php,根据配置文件,Web Server知道这个不是静态文件,需要去找 PHP 解析器来处理,那么他会把这个请求简单处理,然后交给PHP解析器。 当Web Server收到 index.php 这个请求后,会启动对应的 CGI 程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程,Web server再把结果返回给浏览器。这就是一个完整的动态PHP Web访问流程,接下来再引出这些概念,就好理解多了, CGI:是 Web Server 与 Web Application 之间数据交换的一种协议。 FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。同样,SCGI 协议与 FastCGI 类似。 PHP-CGI:是

php-fpm cgi fast-cgi

时间秒杀一切 提交于 2020-01-24 09:51:52
基础 在整个网站架构中,Web Server(如Apache)只是内容的分发者。举个栗子,如果客户端请求的是 index.html,那么Web Server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。 如果请求的是 index.php,根据配置文件,Web Server知道这个不是静态文件,需要去找 PHP 解析器来处理,那么他会把这个请求简单处理,然后交给PHP解析器。 当Web Server收到 index.php 这个请求后,会启动对应的 CGI 程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程,Web server再把结果返回给浏览器。这就是一个完整的动态PHP Web访问流程,接下来再引出这些概念,就好理解多了, CGI: 是 Web Server 与 Web Application 之间数据交换的一种协议。 FastCGI: 同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。同样,SCGI 协议与 FastCGI 类似。 PHP-CGI: 是 PHP (Web Application)对 Web Server 提供的 CGI 协议的接口程序。 PHP-FPM: 是 PHP(Web Application)对 Web Server

LNMP-WordPress 站点搭建

浪子不回头ぞ 提交于 2020-01-24 03:09:47
LNMP-WordPress 站点搭建 一.部署数据库 1.1 二进制部署 MySQL 1.2 创建数据库和用户并授权 1.3 验证账户访问权限 二.部署 PHP 2.1 编译安装 PHP 7.2.15 2.2 准备 PHP 配置文件 2.3 启动 php-fpm 服务 三.部署 Nginx 3.1 下载 nginx 3.2 修改源码 server 信息 3.3 编译安装 3.4 准备 php 测试页面 3.5 配置 Nginx 3.6 重启访问 php 状态页 四.部署 Wordpress 4.1 部署 Wordpress 4.2 初始化配置 4.3 验证数据库 4.4 验证自定义的 server 信息 4.5 隐藏 PHP 版本 五.使用 PHP 扩展 session 模块--redis 5.1 编译安装 php-pecl-redis 5.2 验证加载 redis 模块 5.3 将 session 写入 redis 5.4 配置 php.ini 5.5 准备 session 写入 web 页面 5.6 redis 验证 session 数据 一.部署数据库 1.1 二进制部署 MySQL # 安装依赖 [ root@s2 ~ ] # yum install vim gcc gcc-c++ wget autoconf net-tools lrzsz iotop lsof

CGI、FastCGI和php-fpm的区别

无人久伴 提交于 2020-01-11 05:09:01
参考网上的描述,将网上的描述内容,整理进来: 首先,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程序性能的。 提高性能,那么CGI程序的性能问题在哪呢?

php-fpm优化

故事扮演 提交于 2020-01-11 00:15:41
  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

PHPFastCGI进程管理器PHP-FPM详解

杀马特。学长 韩版系。学妹 提交于 2020-01-10 10:45:08
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配置文件详解

隐身守侯 提交于 2020-01-09 23:49:20
第一部分:FPM 配置 -p : 命令行中动态修改--prefix   ;include=etc/fpm.d/*.conf  #用于包含一个或多个文件,如果glob(3)存在(glob()函数返回匹配指定模式的文件名或目录) 第二部分:全局配置 由标志 [global] 开始: ;pid = run/php-fpm.pid      设置pid文件的位置,默认目录路径 /usr/local/php/var ;error_log = log/php-fpm.log   记录错误日志的文件,默认目录路径 /usr/local/php/var ;syslog.facility = daemon     用于指定什么类型的程序日志消息。 ;syslog.ident = php-fpm     用于FPM多实例甄别 ;log_level = notice        记录日志的等级,默认notice,可取值alert, error, warning, notice, debug ;emergency_restart_threshold = 0 如果子进程在这个时间段内带有IGSEGV或SIGBUS退出,则重启fpm,默认0表示关闭这个功能 ;emergency_restart_interval = 0  设置时间间隔来决定服务的初始化时间(默认单位:s秒),可选s秒,m分,h时,d天

php-fpm回顾和总结

大城市里の小女人 提交于 2020-01-09 02:13:10
时间久了很容易忘,这里做个备份 FastCGI协议php语言的实现,可以高效处理来自web端的动态请求 php-fpm维护一个或者多个php-cgi进程池,处理请求时不需要频繁创建进程 所以比传统的CGI协议要更高效 技术架构 单master - 多worker master 非阻塞,异步IO模型 负责管理worker进程(创建、销毁、检查健康状态等)、监听连接、处理管理员发出的信号、启动时间循环等。 master进程执行的四个阶段 cgi初始化:外部信号hook注册、sapi全局变量初始化等; php环境初始化:加载和解析php.ini,加载php模块等; php-fpm初始化:加载和解析php-fpm.conf,初始化进程池等; php-fpm执行阶段:fork worker进程和启动事件循坏等。 worker 阻塞模型 负责接收请求,处理请求,请求结束返回。 创建worker进程的三种方式 static: 创建固定数目的worker进程,减少频繁创建进程的开销。 dynamic: 动态调整worker进程数量,初始时会创建最低数目的worker进程,创建的进程数最大不超过设置的阈值。 ondemand: 按需创建,来一个请求创建一个,请求处理完,进程结束。 master处理的信号说明 SIGUSR1:重新打开日志文件,用于文件太大需要备份时的场景,重新打开不会清空原来的文件

502 VS 504

你说的曾经没有我的故事 提交于 2020-01-08 23:35:09
本文同时发表在 https://github.com/zhangyachen/zhangyachen.github.io/issues/89 首先看一下概念: 502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 504:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。  注意:某些代理服务器在DNS查询超时时会返回400或者500错误。 通俗的来说,nginx作为一个代理服务器,将请求转发到其他服务器或者php-cgi来处理,当nginx收到了无法理解的响应时,就返回502。当nginx超过自己配置的超时时间还没有收到请求时,就返回504错误。 502 上面说到nginx收到了无法理解的响应,什么是无法理解的响应呢? nginx无法与php-fpm进行连接。 nginx在连接php-fpm一段时间后发现与php-fpm的连接被断开。 那么什么时候会出现上面的情况呢? php-fpm没有启动,nginx无法将请求交给php-fpm php-fpm运行脚本超时,php-fpm终止了脚本的执行和执行脚本的Worker进程,nginx发现自己与php-fpm的连接断开。 我们逐一实验上述的情况: php-fpm没有启动 我们关闭php-fpm。

php-fpm运行原理

做~自己de王妃 提交于 2020-01-07 02:14:44
来源: https://blog.csdn.net/sinat_38804294/article/details/94393621 一、php-fpm由来 1.cgi (common gateway interface 公共网关接口)是一种协议,也是一种程序 它是为了保证web server传递过来的数据是标准格式,方便cgi程序的编写者。 web server网站服务器只是内容的分发者(比如nginx)。如果请求/index.html,那么nginx会去文件系统中找到这个文件,发送给浏览器。这里分发的是静态数据。如果请求/index.php,根据配置文件,nginx知道这不是一个静态文件,需要去找php解析器来处理,那么nginx就会把这个请求简单处理交给php解析器。但是nginx传递给php解析器什么呢?url、查询字符串、post数据、header?这时候cgi就出来了,cgi就是规定了要传那些数据并以什么格式传递给后方处理这个请求的协议。 当web server 收到/index.php请求后,会启动对应的cgi程序,这里就是php的解析器。接下来php解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以cgi规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。 2.fastcgi用来提高cgi程序性能的 cgi是个协议