关于php页面最大执行时间问题(set_time_limit函数在windows下不起作用...
来源:百度文库 编辑:神马文学网 时间:2024/06/13 14:55:24
首先说一下我的运行环境winxp+php5.2.5+apache2.2.8+5.0.27-community-nt
我想测试插入5万条数据到数据库里。
页面如下
![](http://image14.360doc.cn/DownloadImg/2010/09/0117/4989922_1.gif)
代码global $begin;
global $end;
$begin = microtime(TRUE);
try {
$dsn = "mysql:host=localhost;dbname=kaixin";
$db = new PDO($dsn, 'root', '111');
$db->exec("set names 'utf8'");//默认编码
$db->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION);
for($i=1; $i<5000; $i++){
$sql = "insert into `article` (`title`, `content`, `time`, `author`, `ip`) value ('文章标题".$i."', '内容".$i."',
'1227237892','kaixin','127.0.0.1')";
$db->exec($sql);
}
$end = microtime(TRUE);
$time = $end-$begin;
echo "执行了".$time."s";
} catch (Exception $e) {
echo "Failed: " . $e->getMessage();
}
?>
执行这段代码,只能插入大概1000条左右的数据,这样页面就不执行了。
测试页面的执行时间大概都是29秒左右,也就是页面的最大执行时间 是30秒。
知道set_time_limit函数,可以设置页面执行时间。
set_time_limit函数用法如下:
本函式用来设定该页最久执行时间。内定值是 30 秒,在 php.ini 中的 max_execution_time 变数设定,若设定为 0 则不限定最久时间。当执行到该函数时,才开
始计算。例如,若内定是 30 秒,而在执行到该函数前已执行了 25 秒,而用本函式改为 20 秒,则该页面最长执行时间为 45 秒。
我把这个set_time_limit函数加到了程序里,
set_time_limit(0);
global $begin;
global $end;
$begin = microtime(TRUE);
...
?>
发现页面执行时间还是29秒左右,没有起作用。
看到网上有人说,php.ini里的safe_mode如果为on,本函数不执行。查了我的php.in里的safe_mode=off。
我又试着把set_time_limit(0);加入到for循环里。
![](http://image14.360doc.cn/DownloadImg/2010/09/0117/4989922_1.gif)
代码...
for($i=1; $i<5000; $i++){
set_time_limit(0);
$sql = "insert into `article` (`title`, `content`, `time`, `author`, `ip`) value ('文章标题".$i."', '内容".$i."',
'1227237892','kaixin','127.0.0.1')";
$db->exec($sql);
}
...
?>
也 没有起作用。
最后在网上查到,有人说,“set_time_limit函数最好是在linux下执行,windows执行可能也无效”。彻底对这个函数失去信心 了,估计是因为我是windows系统的原因。
只能修改php.ini里的max_execution_time = 30了。这个默认是30秒,我修改为max_execution_time = 300.重新启动apache服务器。
结果执行时间为140秒左右,5000条数据终于插入了。
看来,windows下这个页面执行时间还是在php.ini里控制,修改max_execution_time。
从上面的实例也可以得出,如果用PDO往MYSQL里面插入数据的话。插入五千条大概140多秒时间,插入1万条大概260多秒时间。
我想测试插入5万条数据到数据库里。
页面如下
![](http://image14.360doc.cn/DownloadImg/2010/09/0117/4989922_1.gif)
![](http://image14.360doc.cn/DownloadImg/2010/09/0117/4989922_2.gif)
global $end;
$begin = microtime(TRUE);
try {
$dsn = "mysql:host=localhost;dbname=kaixin";
$db = new PDO($dsn, 'root', '111');
$db->exec("set names 'utf8'");//默认编码
$db->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION);
for($i=1; $i<5000; $i++){
$sql = "insert into `article` (`title`, `content`, `time`, `author`, `ip`) value ('文章标题".$i."', '内容".$i."',
'1227237892','kaixin','127.0.0.1')";
$db->exec($sql);
}
$end = microtime(TRUE);
$time = $end-$begin;
echo "执行了".$time."s";
} catch (Exception $e) {
echo "Failed: " . $e->getMessage();
}
?>
执行这段代码,只能插入大概1000条左右的数据,这样页面就不执行了。
测试页面的执行时间大概都是29秒左右,也就是页面的最大执行时间 是30秒。
知道set_time_limit函数,可以设置页面执行时间。
set_time_limit函数用法如下:
本函式用来设定该页最久执行时间。内定值是 30 秒,在 php.ini 中的 max_execution_time 变数设定,若设定为 0 则不限定最久时间。当执行到该函数时,才开
始计算。例如,若内定是 30 秒,而在执行到该函数前已执行了 25 秒,而用本函式改为 20 秒,则该页面最长执行时间为 45 秒。
我把这个set_time_limit函数加到了程序里,
set_time_limit(0);
global $begin;
global $end;
$begin = microtime(TRUE);
...
?>
发现页面执行时间还是29秒左右,没有起作用。
看到网上有人说,php.ini里的safe_mode如果为on,本函数不执行。查了我的php.in里的safe_mode=off。
我又试着把set_time_limit(0);加入到for循环里。
![](http://image14.360doc.cn/DownloadImg/2010/09/0117/4989922_1.gif)
![](http://image14.360doc.cn/DownloadImg/2010/09/0117/4989922_2.gif)
for($i=1; $i<5000; $i++){
set_time_limit(0);
$sql = "insert into `article` (`title`, `content`, `time`, `author`, `ip`) value ('文章标题".$i."', '内容".$i."',
'1227237892','kaixin','127.0.0.1')";
$db->exec($sql);
}
...
?>
也 没有起作用。
最后在网上查到,有人说,“set_time_limit函数最好是在linux下执行,windows执行可能也无效”。彻底对这个函数失去信心 了,估计是因为我是windows系统的原因。
只能修改php.ini里的max_execution_time = 30了。这个默认是30秒,我修改为max_execution_time = 300.重新启动apache服务器。
结果执行时间为140秒左右,5000条数据终于插入了。
看来,windows下这个页面执行时间还是在php.ini里控制,修改max_execution_time。
从上面的实例也可以得出,如果用PDO往MYSQL里面插入数据的话。插入五千条大概140多秒时间,插入1万条大概260多秒时间。
关于php页面最大执行时间问题(set_time_limit函数在windows下不起作用...
一个关于框架页面frame之间JS函数调用的问题
一个关于框架页面frame之间JS函数调用的问题
获取aspx页面执行时间完全解决方案
Windows 下IIS PHP MYSQL安装配
关于php序列化的问题
Windows 下IIS PHP MYSQL安装配置(yigo.cn)
Windows XP 环境下安装 PHP 5.2.6.
libpcap关于callback函数参数传递问题
PHP MySQL 函数
PHP trim() 函数
PHP 函数(Functions)
php 页面三种跳转
在Windows下使用gcc
解决 Windows 无法显示隐藏文件夹的问题(在 WindowsXP/2000/2003下通过)
解决HP QC(Quality Center)在Windows 7下不能工作的问题
Win下Java +apache+tomcat+php+mysql+resin整合问题
关于php时区错误问题 - 佳佰技术论坛 - Jabai.Com
php 函数传值,传址,函数参数
php的几个配置文件函数
PHP通用检测函数集合
PHP的Socket函数参考
PHP 拼音反查函数
PHP通用检测函数集合