如何在php中为请求超时计时进程

时间:2015-04-14 09:04:47

标签: php

我的PHP代码超时时出现以下错误:

  

此请求处理时间过长,服务器超时。如果不应该超时,请联系本网站的管理员以增加“连接超时”

我不确定为什么会这样。这是我的代码:

if(!in_array($name,$names)){
    mysql_query("INSERT INTO `tbl` (`name`, `time`, `link`) VALUES ( '$name', '$time', '$link');");
} else {
    mysql_query("UPDATE `tbl` SET `time` = '$time', `link` = '$link' WHERE `pishkhan`.`name` = $name;");
    echo $name.'<br/>'; 
}
file_put_contents('test/albums/news/'.$name.".jpg", fopen($link, 'r'));

3 个答案:

答案 0 :(得分:7)

正如我在my answer here中所述,这个特殊的错误消息是由LiteSpeed Web服务器生成的(Apache的更快替代品)。它具有一个特殊功能,可以取消长时间运行的脚本(甚至是那些使用set_time_limit()的脚本)。要禁用此功能,您需要将以下内容放在网站根目录的.htaccess文件中。

RewriteEngine On
RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]

答案 1 :(得分:3)

您可以将set_time_limit设置为比默认值30s更大的值。但是从你的代码中,我不明白为什么它必须超时。也许一些配置问题?像mysql连接太长了?

此外,请勿使用已弃用的mysql_*函数。使用mysqli_*或PDO。

答案 2 :(得分:0)

听起来主机限制了执行时间。也许在运行循环之前要考虑设置时间限制? http://php.net/manual/en/function.set-time-limit.php