绕过max_execution_time?

时间:2011-09-06 11:01:52

标签: php

我的服务器上有10秒钟,这对我正在尝试做的事情来说还不够。它也被webhost禁用了。

如果在执行一定时间之后,我执行了一个单独的PHP页面,那是否会计入同一时间或者是否在该页面重新开始?

还有另外一种方法吗?

7 个答案:

答案 0 :(得分:4)

最大化执行时间的简单方法是设置时间限制,如下所示:

参数或者set_time_limit(0);

答案 1 :(得分:1)

可能的解决方法可能涉及设置cron作业以在较小的部分执行任务。我很欣赏这可能是非常不受欢迎的。

答案 2 :(得分:1)

你可以使用Javascript解决它;让您的页面在超时到期之前完成自己的执行,保存其状态,并将Javascript返回给用户,这会导致客户端请求新页面继续处理新的时间限制。

我不推荐这个。

答案 3 :(得分:0)

尝试set_time_limit()

然而

  

当PHP以安全模式运行时,此功能无效。除了关闭安全模式或更改php.ini

中的时间限制外,没有其他解决方法

当您包含越来越多的文件时,它不会重置计数器

答案 4 :(得分:0)

没有办法绕过它 - 假设你的webhost正确配置了它的服务器。

时间量是指所有脚本,而不是单独的。

答案 5 :(得分:0)

  

如果在执行一定时间之后,我执行了一个单独的PHP页面,那是否会计入同一时间或者是否在该页面重新开始?

如果使用HTTP请求(不是包含)调用单独的PHP页面,例如file_get_contents('http://example.com/mypage.php');,则不会同时计算。它在该页面上重新开始。

几年前我自己也使用过这个技巧......

除此之外,请尝试set_time_limit并考虑安排“每分钟” cronjob 来执行任务。

答案 6 :(得分:0)

正如@Borealid所说,您可以使用javascript和ajax请求继续使用以前保存的状态执行脚本。为此,您可以使用serialize()在会话中保存您或您可能拥有的变量,并使用计数器或您认为有用的任何其他工具来跟踪进度。几年前我使用了类似的技术,实际上在完成每一步之后刷新了页面,所有这一切都是为了看到它的任何输出,好像我会让它完成,我可能需要几天时间才能输出。你也可以尝试一下。每个请求都会应用最长执行时间。