近日(2012-12-3) 在进行(php+sqlite)数据库导出导入的时候,导入数据操作 报Fatal error: Maximum execution time of 30 seconds exceeded in *.php line * 的错误,而插入的数据不超过1000条,电脑配置也不差。
究其原因,在导入数据的时候,我没使用事务提交。导致插入几百条数据竟使用30秒以上。以下是更改后的代码!数据导入的方法来自:http://bbs.lampbrother.net/read-htm-tid-114482.html
<?php
set_time_limit(0); //0代表永不超时
$flag=true;
$pdo=new PDO(NBOX_DB);//连接数据库
$temp = $_FILES["file"]["tmp_name"];
$sql_stream = file_get_contents($temp);//读取整个文件内容
$sql_stream = rtrim($sql_stream);//去掉末尾空格
//利用正则替换函数,将导入的内容部分,即insert value里的;换成特殊符号' $$$ '为进一步按;切割单条sql语句做准备
$new_stream = preg_replace_callback("/\((.*)\)/", create_function('$matches', 'return str_replace(";"," $$$ ",$matches[0]);'), $sql_stream);
//切割单条sql语句生成数组
$sql_array = explode(";", $new_stream);
//遍历该数组
$pdo->beginTransaction();
foreach ($sql_array as $value) {
if (!empty($value)){ //数组最后一个是空数组,所以需要判断一下
$sql = str_replace(" $$$ ", ";", $value) . ";"; //将该条sql语句中' $$$ '转换回;
$count=$pdo->exec($sql); //执行该语句
if($count!=1){ //返回false if(!$pd0)
echo "\nPDO::errorInfo():\n";
print_r($pdo->errorInfo());
$pdo->rollBack();
$flag=false;
break;
}
}
}
if ($flag){
$pdo->commit();
echo "数据插入成功";
}
?>
导入数据超时除了以上代码优化,如果数据海量,那么可以重新设置超时时间,
方法1:设置php.ini下的max_execution_time = 30 将30改为0,表示永不超时
方法2:在程序代码中加入 set_time_limit(0); //0代表永不超时
分享到:
相关推荐
最近做的程序中涉及到的循环比较多且处理的情况较复杂,在运行程序时出现执行超时提示如下:Fatal error: Maximum execution time of 30 seconds exceeded in D:phpAppServwwwsum3test.php on line 3通过在网上搜索...
本篇文章是对解决PHP mysql_query执行超时(Fatal error: Maximum execution time of 300 seconds exceeded in…)的问题进行了详细的分析介绍,需要的朋友参考下
Fatal error: Class ‘COM’ not found in XXXXXXXXX 没发现 COM 类,php代码主要是调用一些系统的信息,初想应该是php没配置好,在stackoverflow找到答案,是讨论xampp的,要延伸开来,我加了几个要点: ★ php 根...
PHP Fatal error: Maximum execution time of 30 seconds exceeded in … OK,先列出现在的配置: php-fpm: request_terminate_timeout = 0 php.ini: max_execution_time = 30 先查阅了一下php-fpm文件中关于request...
在本例中,我们关注的错误是“fatal error: boostdesc_bgm.i: No such file or directory”,这通常意味着在尝试编译代码时,编译器无法找到名为“boostdesc_bgm.i”的特定头文件。 `boostdesc_bgm.i` 文件是Boost...
在编程过程中,我们时常会遇到各种编译错误,其中一种比较棘手的错误是"collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped"。这个错误通常发生在尝试使用g++或gcc编译C++或C...
Fatal error: Maximum execution time of 30 seconds exceeded 出现这个错误如何解决?去哪里可以设置最大执行时间? 答: 修改php.ini: max_execution_time = 300 时间,然后重起服务 或者在程序写 set_time_limit...
fatal error: pcre2.h: No such file or directory 27 | #include "pcre2.h" 安装swoole遇到错误,把pcre2.h 放到、usr/include下
加载sklearn库有可能遇到Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll 问题,解决卸载掉numpy,scipy,sklearn三个库重新安装,资源的版本为py35,cpu,64位,全程分别为numpy-1.15.4+mkl-cp35-cp35m-win_...
在PHP开发过程中,可能会遇到“Fatal error Class 'Think' not found in runtime.php”的错误提示,这通常是由于类加载问题导致的。在这个问题中,我们主要关注的是PHP的类自动加载机制以及Linux系统的文件系统特性...
fatal error: zmq.hpp: No such file or directory compilation terminated. 找不到zmq.hpp的原因是, zmq.hpp只存在master中。 如果你使用release版本,那么是没有zmq.hpp这个文件的。去master中找到zmq.hpp。 将...
本文实例讲述了ThinkPHP提示错误Fatal error: Allowed memory size的解决方法。...错误提示:Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 523800 bytes) in /var/w
在Linux系统中,当您尝试编译某个项目或软件,特别是涉及到网络安全和加密的库时,可能会遇到“fatal error: openssl/sha.h: No such file or directory”这样的错误。这个错误意味着您的系统缺少OpenSSL库的头文件...
碰到页面程序执行超时时会提醒Fatal error: Maximum execution time of 300 seconds exceeded 是因为程序执行时间超过了最大允许执行时间,解决办法我们总结了几个供大家选择. 对于函数我们可以常用下面方法,直接给...
主要介绍了php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法,是使用ZipArchive时经常会遇到的问题,需要的朋友可以参考下
主要介绍了Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)错误的解决方法,需要的朋友可以参考下