当前位置: 首页 > 知识库问答 >
问题:

set_time_limit不起作用

长孙永思
2023-03-14

我有一个bigint类在php中,计算大的数字。它工作得很好,除了时间限制。

我设定了时间限制

set_time_limit(900);

在我bigint.php文件里,它在localhost有效。但是在我的网络主机中,当我试图计算999^999时,它会产生错误

致命错误:在第156行的 /home/vhosts/mysite.com/http/bigint/bigint.php中超过了10秒的最大执行时间

这是我的代码:

public function Multiply_Digit($digit){ //class function of bigint
if($digit==0){$this->str="0";}
else
{
$len=$this->length();
$Result = new bigint("0");
                $carry=0;
                $current;
/*line 156:*/   for ($i = 0; $i < $len; $i++)
                {
                    $current = $this->str[$len-$i-1] * $digit;                    
                    if ($i == 0) { $Result->str = ""+(($current + $carry) % 10); }
                    else{ $Result->str .= ""+(($current + $carry) % 10); }                                        
                    $carry = (($current+$carry) - ($current+$carry)%10)/10;
                }
                $Result->str .= ""+$carry;                
                $Result->str = strrev($Result->str);
                $Result->TrimLeadingZeros();                
                $this->str = $Result->str;//sacma oldu.
                }//else. digit not zero
}//Multiply_Digit()

我试着设置时间限制(900)在php文件的启动和类的构造函数中,没有一个起作用。

我认为这是一个会话问题,关闭浏览器并重新打开页面,但仍然需要10秒的时间限制。

我到底做错了什么?

共有2个答案

赵飞语
2023-03-14

“当PHP在安全模式下运行时,此函数无效。除了关闭安全模式或更改PHP.ini中的时间限制外,没有其他解决方法。”http://php.net/manual/en/function.set-time-limit.php

检查一下。

濮阳宏硕
2023-03-14

可能您的apache配置为在10秒后停止执行,您的php.ini是否有以下行:

max_execution_time = 10

如果是,要禁用超时(不推荐),请将其更改为:

max_execution_time = 0

或您选择的任何整数限制:

set_time_limit(360);

您可以在php手册中阅读更多内容。通常,将其设置为0不是一个好主意,因为例如,如果等待不存在的资源,服务器进程可能会被卡住。

最新消息

如果网站是托管的,而不是依赖于托管公司,问他们是否可能。

另一种解决方法是使用ajax调用,让客户机而不是服务器等待

 类似资料:
  • 问题内容: 如果我执行或,则当我在本地主机上回显时,我会得到,但是当我在另一台服务器上执行此操作时,它将回显默认值,并完全忽略我的请求。为什么是这样? 问题答案: 在安全模式下运行时,无法使用ini_set()更改此设置。唯一的解决方法是关闭安全模式或通过更改php.ini中的时间限制。 - PHP手册,运行时配置,描述 许多主机以安全模式运行。其他服务器很可能是其中之一。 编辑:上有相同的限制:

  • 问题内容: 我有一个命令行PHP脚本,该脚本使用带有foreach的数组的每个成员运行wget请求。这个wget请求有时可能会花费很长时间,因此,例如,如果它超过15秒,我希望能够设置超时以终止脚本。我禁用了PHP安全模式,并在脚本的早期尝试了set_time_limit(15),但是它会无限期地继续。 更新: 感谢Dor指出这是因为set_time_limit()不尊重system()调用。 因

  • 因此,我在一个控制器中有一个非常简单的代码片段,在这个代码片段中,我使用从外部文件中获取数据,它工作得很好!但是当我使用时,我会在控制台中得到一个

  • 问题内容: 正则表达式似乎还可以,因为第一行将子字符串正确替换为“ helloworld”,但是后者却不匹配,因为我看不到“ whynothelloworld?”。在控制台上 问题答案: 期望 整个 字符串匹配,而不仅仅是子字符串。 使用正则表达式匹配器对象的方法代替:

  • 问题内容: 我的 活动无法正常进行。 以下是我一一尝试过的代码段,但无济于事: 使用方法实施 设定方法 使用方法 这是我完整的MainActivity.java文件: 问题答案: 我遇到了同样的问题,我发现Android非常注重布局XML。我将NavigationView作为DrawerLayout的第一个孩子,但是出于某些愚蠢的原因,它必须是最后一个孩子。因此,您的布局必须具有以下顺序的元素:

  • 问题内容: 在什么情况下,java的System.out.println无法产生任何输出。我在方法内部调用了它,有时在调用该方法时得到了println,而有时却没有。 更新:我还在println之后使用System.out.flush()。 更新:感谢您的调试帮助。原来,阻止调用打开了一个对话框,使输出看起来与正常顺序大相径庭。我以为我要打印消息的方法是在对话框关闭时被调用的,但是该方法本身就是在