您的位置:

php测试执行时间,php判断时间

本文目录一览:

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;

如何用php获取程序执行的时间

在文件头加入$stime=microtime(true);

在文件尾加入

$etime=microtime(true);//获取程序执行结束的时间

$total=$etime-$stime; //计算差值

echo "br /[页面执行时间:{$total} ]秒";

例如

文件头

?php

$stime=microtime(true);

?

文件尾

?php

$etime=microtime(true);//获取程序执行结束的时间

$total=$etime-$stime; //计算差值

echo "br /[页面执行时间:{$total} ]秒";

这样就可以计算出整个PHP页面执行的时间。纯手打,望采纳。

php有没有可以检测函数执行时间的功能

PHP 中的 microtime() 函数可以实现

microtime() 函数返回当前 Unix 时间戳和微秒数。

microtime(get_as_float)

参数说明

get_as_float 如果给出了 get_as_float 参数并且其值等价于 TRUE,该函数将返回一个浮点数。

本函数仅在支持 gettimeofday() 系统调用的操作系统下可用。

例如:

?php

$start_time = microtime(true);

for($i=1;$i=1000;$i++){

echo $i.'br';

}

$end_time = microtime(true);

echo '循环执行时间为:'.($end_time-$start_time).' s';

?