本文目录一览:
- 1、PHP-Fcgi下PHP的执行时间设置方法
- 2、使用spawn-fcgi,怎么增加php的进程数量
- 3、php5.4.6 (fpm-fcgi)指的什么意思?偶是菜鸟~求指点
- 4、什么是CGI,FastCGI,PHP-CGI,PHP-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);
PHP-Fcgi下PHP的执行时间设置方法
昨天,一个程序需要导出500条数据,结果发现到150条是,Nginx报出504
Gateway
Timeout错误
经观察,发现大约30秒时超时,php.ini中执行时间配置已经是300秒:
复制代码
代码如下:
max_execution_time
=
300
再查nginx的相关配置,无果。
写了一个php的测试页再测
复制代码
代码如下:
echo
'aaa';
set_time_limit(0);
sleep(40);
echo
'aa';
依然超时,可以确定set_time_limit这个函数没生效。
再查php-fcgi的配置php-fpm.conf,下边这个设置疑似有问题
复制代码
代码如下:
VALUE
name="request_terminate_timeout"30s/VALUE
查官方文档:
复制代码
代码如下:
request_terminate_timeout
-
The
timeout
(in
seconds)
for
serving
a
single
request
after
which
the
worker
process
will
be
terminated.
Should
be
used
when
'max_execution_time'
ini
option
does
not
stop
script
execution
for
some
reason.
Default:
"5s".
Note:
'0s'
means
'off'
大意是php中set_time_limit设置的时间内如果php还没执行完,则走此处的配置,也就是request_terminate_timeout=30秒。
先把这个参数改的和php中set_time_limit值一样,都是300秒,还不行,不理解为什么,如果高手知道请赐教。
最终把request_terminate_timeout关闭,程序可以正常执行了,问题解决
复制代码
代码如下:
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里的,现在已经可以独立出来使用。原先我看一些文档,在VPS上配置nginx时使用spawn-fcgi包作为FastCGI支持模块(当然还有其他的支持模块,如php-fpm包),后来因为配置nginx时老出现502错误,就暂时使用apache了。把nginx自启动关闭,把 apache启动后,打开网页发现速度比之前快了很多!我开始以为是网络一时加速而已,后来过了几天也发现很快。感觉快了最少两倍以上。(没有用工具严格测试过)后来一想,是apache的运行模式改用了FastCGI模式,速度成倍提高。刚才重新配置测试了一次,果然如此!
方法:系统平台是CentOS 5,前提是LAMP已配置好,运行正常。
1、32位:rpm -ivh entos.alt.ru/repository/centos/5/i386/spawn-fcgi-1.6.3-1.el5.i386.rpm
64位:rpm -ivh htttos.alt.ru/repository/centos/5/x86_64/spawn-fcgi-1.6.3-1.el5.x86_64.rpm
(也可以去官方下载源码包编译安装:h)
2、使用spawn-fcgi来控制php-cgi的FastCGI进程:
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u apache -g apache -f /usr/bin/php-cgi
参数含义如下:
-f fcgiapp 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置。
-a addr 绑定到地址addr。
-p port 绑定到端口port。
-s path 绑定到unix socket的路径path。
-C childs 指定产生的FastCGI的进程数,默认为5。(仅用于PHP)
-P path 指定产生的进程的PID文件路径。
-u和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,CentOS下可以使用apache用户,其他的根据情况配置,如nobody、www-data等。
4. 将这行代码加入到/etc/rc.local文件底部,这样系统启动的时候就可以同时启动PHP的FastCGI进程。
php5.4.6 (fpm-fcgi)指的什么意思?偶是菜鸟~求指点
就个人的使用体验,如果你迷惑于PHP安装版本的选择,可以直接安装PHP整合安装包,比如:XAMPP/ WampServer.
以下是相关资料解释:
PHP-FPM是一个PHP FastCGI管理器,是只用于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。
什么是CGI,FastCGI,PHP-CGI,PHP-FPM,Spawn-FCGI
您好,很高兴为您解答。
CGI(通用网关接口)
CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。 CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。
FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。
PHP-CGI是PHP自带的FastCGI管理器。
PHP-FPM是一个PHPFastCGI管理器,是只用于PHP的。
spawn-fcgi是一个通用的FastCGI管理服务器
她是lighttpd中的一部份,但目前已经单独成为一个项目,最新的lighttpd没有这一块,但可以在以前版本中找到她,在lighttpd-1.4.15中就有
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
php-fcgi.sock怎么增加
首先nignx与php-fpm的连接是通过php-fcgi.sock进行的,如果php-fcgi.sock出现问题将出现502BAD GATWAY问题,也就是无法连接通信。
php-fcgi.sock当php启动时产生,关闭时清除。虽然在php启动时给php-fcgi.sock 755权限,但是重启php时还是会变成rw-rw--权限,并且user、group都是root。