fcgi与php的简单介绍

发布时间:2022-11-22

本文目录一览:

  1. PHP-Fcgi下PHP的执行时间设置方法
  2. 使用spawn-fcgi,怎么增加php的进程数量
  3. php5.4.6 (fpm-fcgi)指的什么意思?偶是菜鸟~求指点
  4. [什么是CGI,FastCGI,PHP-CGI,PHP-FPM,Spawn-FCGI](#什么是cgifastcgiphp-cgiphp-fpm spawn-fcgi)
  5. php-fcgi.sock怎么增加

PHP-Fcgi下PHP的执行时间设置方法

昨天,一个程序需要导出500条数据,结果发现到150条时,Nginx报出504 Gateway Timeout错误,原来PHP-Fcgi下的设置执行时间与isapi的不同。 一般情况下设置PHP脚本执行超时的时间:

一、在php.ini里面设置

max_execution_time = 1800

二、通过PHP的ini_set函数设置

ini_set("max_execution_time", "1800");

三、通过set_time_limit函数设置

set_time_limit(1800);

问题排查记录: 昨天一个程序在导出数据时,Nginx 报出 504 Gateway Timeout 错误。观察发现大约在30秒时超时,虽然 php.ini 中的 max_execution_time 已设置为 300 秒:

max_execution_time = 300

测试页面如下:

echo 'aaa';
set_time_limit(0);
sleep(40);
echo 'aa';

依然超时,说明 set_time_limit 没有生效。 检查 php-fpm.conf,发现以下配置:

<value name="request_terminate_timeout">30s</value>

根据官方文档说明,request_terminate_timeout 是单个请求的最大执行时间,如果 PHP 脚本没有在 max_execution_time 内完成,则会触发此设置,默认为 5s,设置为 0s 表示关闭。 最终将 request_terminate_timeout 设置为 0s,问题解决:

<value name="request_terminate_timeout">0s</value>

补充: 如果前端的 Nginx 使用了 upstream 负载均衡,还需要修改以下参数:

proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;

使用spawn-fcgi,怎么增加php的进程数量

spawn-fcgi 原本是 Lighttpd 的一部分,现在可以独立使用。它用于启动和管理 FastCGI 进程。

安装 spawn-fcgi

  • 32位系统:
rpm -ivh http://centos.alt.ru/repository/centos/5/i386/spawn-fcgi-1.6.3-1.el5.i386.rpm
  • 64位系统:
rpm -ivh http://centos.alt.ru/repository/centos/5/x86_64/spawn-fcgi-1.6.3-1.el5.x86_64.rpm

启动 php-cgi 进程

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u apache -g apache -f /usr/bin/php-cgi

参数说明:

  • -f:指定 FastCGI 程序路径。
  • -a:绑定 IP 地址。
  • -p:绑定端口。
  • -s:绑定 Unix Socket 路径。
  • -C:指定产生的 FastCGI 进程数,默认为 5。
  • -P:指定 PID 文件路径。
  • -u-g:指定运行用户和用户组。

设置开机启动

将上述命令添加到 /etc/rc.local 文件中,实现开机自动启动。

php5.4.6 (fpm-fcgi)指的什么意思?偶是菜鸟~求指点

如果你是新手,建议直接使用集成环境如 XAMPP 或 WampServer。

PHP-FPM 是什么?

PHP-FPM(FastCGI Process Manager)是一个 PHP FastCGI 管理器,专为 PHP 设计。它最初是 PHP 源码的一个补丁,后来被官方集成到 PHP 5.3.3 及以上版本中。

特点:

  • 更好的内存和进程管理。
  • 支持平滑重载配置。
  • 不容易崩溃,无需额外监控。
  • 使用 --enable-fpm 参数启用。

对比 Spawn-FCGI:

  • Spawn-FCGI 是一个通用的 FastCGI 管理器,最初属于 Lighttpd。
  • PHP-FPM 在性能和稳定性上优于 Spawn-FCGI。

什么是CGI,FastCGI,PHP-CGI,PHP-FPM,Spawn-FCGI

CGI(Common Gateway Interface)

CGI 是 HTTP 服务器与后端程序通信的标准接口,每次请求都会 fork 一个新进程,性能较低。

FastCGI

FastCGI 是 CGI 的改进版,常驻内存,避免频繁 fork,性能更高,支持分布式计算。

PHP-CGI

PHP 自带的 FastCGI 实现,功能简单,适合轻量级使用。

PHP-FPM

PHP-FPM 是 PHP 的 FastCGI 管理器,提供更好的进程管理、内存控制和配置热加载,是官方推荐的方式。

Spawn-FCGI

一个通用的 FastCGI 管理器,原属于 Lighttpd,现已独立。适合多种语言,但不如 PHP-FPM 稳定。

php-fcgi.sock怎么增加

Nginx 与 PHP-FPM 通过 php-fcgi.sock 通信,如果该文件出现问题,会导致 502 Bad Gateway 错误。

生成与权限问题:

  • php-fcgi.sock 在 PHP 启动时生成,关闭时清除。
  • 默认权限为 rw-rw--,用户和组为 root
  • 可以在 php-fpm.conf 中配置权限和用户组。

示例配置:

<value name="listen">/var/run/php-fcgi.sock</value>
<value name="listen.owner">www-data</value>
<value name="listen.group">www-data</value>
<value name="listen.mode">0660</value>

确保 Nginx 配置中使用相同的 socket 路径:

fastcgi_pass unix:/var/run/php-fcgi.sock;