PHP脚本执行超时的解决办法

php.ini 中缺省的最长执行时间是 30 秒,虽然可以通过调整 php.ini 中 max_execution_time的值来达到目的,但有些情况是没有条件修改php.ini的,如何解决这个问题呢。

一种方法是在 PHP 脚本中加入

 代码如下 复制代码

ini_set('max_execution_time', '0');

将运行时间设置成0(无限值);

另一种方法是在命令行下执行脚本,使用命令行执行脚本时,最大运行时间被设置为了无限值。

修改php.ini的脚本执行时间限制

编辑php.ini,修改max_execution_time值:

 代码如下 复制代码

max_execution_time=500

//此修改需要重新加载php.ini,需要重启web服务器生效。

通过.htaccess 文件设置脚本执行时间

 代码如下 复制代码

php_value max_execution_time 500

在脚本中设置执行的最大时间

 代码如下 复制代码

ini_set('max_execution_time', 500);

用php的函数取消脚本的时间限制

 代码如下 复制代码

set_time_limit(0);

set_time_limit用来设置脚本的超时时间,此函数规定从该句运行时起程序必须在指定秒数内运行结束,超时则程序出错退出。

下面是一个例子. 有10000条数据, 要修改其中某些数据,  运用PHP分步执行处理, 代码如下:

action.php

 代码如下 复制代码

<?php
$stid = isset($_GET['stid'])?$_GET['stid']:0;
$endid = $stid + 100;
$maxid = 10000;

function dosomething(){
//要时间比较多的操作
……
}
$sql_string=”select *  from `table`  where id>’$stid’ and id<=’$endid’ order by id”;
$datas = getdata_bysql($sql_string);
foreach($datas as $data){
//处理数据
…..
echo $id.” 处理完成. <br />”;
if($id>=$maxid){exit;}
}
if($stid<=$maxid){
$stid = $stid + 100;
$url=”action.php?stid=$stid”;
echo $url;
echo ‘<script language=”javascript”>location=”‘.$url.’”; </script>’;
}
?>

其中的dosomething()是一个耗时操作.  这里我们通过限制id范围来减少运行时间,   运行完后通过javascript的跳转来自动运行下一步

现在dedecms生成html页面时就是这样做的哦。

时间: 2024-10-25 00:51:44

PHP脚本执行超时的解决办法的相关文章

mysql导入sql文件过大或连接超时的解决办法

原文:mysql导入sql文件过大或连接超时的解决办法      前段时间出差在现场开发的时候,导入数据库老是出问题.最后发现了一个神奇sql语句交给实施,只要导入出错就把如下语句执行就可以了.至今屡试不爽. set global max_allowed_packet=100 000 000; set global net_buffer_length=100000; SET GLOBAL interactive_timeout=28800 000; SET GLOBAL wait_timeout

ASP脚本运行超时的解决方法

最近在学习服务器知识.有时候遇到asp脚本运行超时的错误,真是麻烦.找了相关资料,其中有一些解决方法. IIS默认的脚本超时时间是90秒 这样的话如果你是上传软件或者传送数据大于90秒的时候就会产生进程脚本超时放弃你的执行,保护服务器的处理大容量数据内存以及CPU占用过大导致死机或者不稳定的情况 处理办法是 一种:你可以在IIS所在网站的属性里点击"主目录"然后"配置""选项"里ASP/cGI脚本超时 大小设置高一些 另一种方法更简单:直接在程序

nodetool工具连接超时错误解决办法

nodetool查看本地集群状态时,N久以后出现无法连接.连接超时的错误提示: $ nodetool status nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection timed out'. 经排查为/etc/hosts文件配置错误所致,文件中实际的主机名(不是localhost)对应的ip地址解析行设置错误,这是由于主机ip地址更换后未及时更新hosts文件所致.更改为正确的ip地址类似

WinWebMail邮件投递超时错误解决办法

  服务器端安装的是WinWebMail3.7.3.1,之前邮箱都使用正常,可是近来频频出现邮件投递失败的情况,首先考虑到是DNS的原因. 在大部分情况下对外部(英特网)邮箱发信失败都是因为DNS设置不当或所使用的DNS服务器无法正常工作引起的.可以在服务器上点击右下角图标,然后在弹出菜单中选取"服务"项后查看所设置的DNS服务器地址(见下图).需确认: 1. 是否设置有DNS服务器地址. 2. 所设置的DNS服务器地址是否是有效的. 3. 此DNS服务器是否正常工作. 可以试试下面这

请问一个线程在启动HttpWebRequest使用时,(发生阻塞或超时的解决办法) ??

问题描述 请问一个线程在启动HttpWebRequest使用时,(发生阻塞的解决办法)HttpWebRequest访问某地址时,如果该线程发生阻塞或超时,是否会影响网络资源,以及如何结束该线程??请高手提示一二. 解决方案 解决方案二:帮你顶一下解决方案三:加个try语句就可以了.解决方案四:up解决方案五:友情帮顶~解决方案六:Timeout设长一点,同时使用异步来BeginGetResponse来处理.解决方案七:try....catch啊解决方案八:这个如果失败,应该是可以抛出一个异常的,

windows下写的shell脚本在linux执行出错的解决办法_linux shell

在Windows下写了一个shell脚本,上传到Linux下执行时报错: 复制代码 代码如下: [root@localhost test]# ./test.sh   -bash: ./test.sh: /bin/sh^M: bad interpreter: No such file or directory test.sh源码:  复制代码 代码如下: #!/bin/sh  echo "test shell " 由于自己对shell不太熟悉,找同事沟通了后了解了原委,主要原因是test

ASP基础:ASP脚本运行超时的解决方法

IIS默认的脚本超时时间是90秒 这样的话如果你是上传软件或者传送数据大于90秒的时候就会产生进程脚本超时放弃你的执行,保护服务器的处理大容量数据内存以及CPU占用过大导致死机或者不稳定的情况 处理办法是 一种:你可以在IIS所在网站的属性里点击"主目录"然后"配置""选项"里ASP/cGI脚本超时 大小设置高一些 另一种方法更简单:直接在程序的头部加入 Server.ScriptTimeOut = 500 '500是你设置的脚本超时的时间,秒为

ASP.Net生成后台脚本的问题的解决办法

asp.net|后台|脚本|解决|问题 用ASP.NET开发web应用经常会用到弹出对话框,一般情况下我是这样写的 Response.Write("","<script>alert('弹出窗口!');</script>"); 但是这样写有一个问题就是当 对话框弹出的时候整个页面都是白的,进度条在缓慢的移动,等你点了确定后就好了,这是为什么呢? 我是这样理解的,程序是顺序执行的,当执行到上面的语句的时候,程序开始等待用户的操作,然后再往下执行,

php curl获取网页内容(IPV6下超时)的解决办法

如果开启了IPv6,curl默认会优先解析 IPv6,在对应域名没有 IPv6 的情况下,会等待 IPv6 dns解析失败 timeout 之后才按以前的正常流程去找 IPv4   原因:在程序中我对curl获取内容都作了较为严格的超时限制,所以就会造成无法获取内容的问题. 解决方法:设置默认访问为ipv4.php的curl设置方法如下: 复制代码 代码如下: <?php /** * IPV6下curl超时问题 */ $ch = curl_init(); curl_setopt ($ch, CU