【发布时间】:2017-02-27 15:33:49
【问题描述】:
如何可靠地绕过服务器或浏览器施加的任何超时?在许多托管托管服务器上,甚至 set_time_limit(x) 和 ini_set('max_execution_time', x) 都会被覆盖,并且通常限制在几分钟内。
在多个文件之间拆分工作负载并重定向到下一个文件是一种可能性,但例如 Google Chorme 在 20 次重定向后会中止。
还有其他方法可以防止脚本过早退出吗?
我知道 StackOverflow 不太喜欢这类问题,但没有任何类似的帮助网站可以。
非常感谢
【问题讨论】:
-
浏览器没有任何超时。它会永远等下去。您无法采取任何措施来避免服务器超时。它们旨在防止资源占用进程。您可以通过接受作业,将它们放入队列,使用一些后台进程处理它们并将结果存储在数据库中然后在准备好时显示用户结果来解决它们。
-
您需要从浏览器中执行此操作吗?根据您提供的少量信息,从命令行使用像 cron 这样的任务调度程序似乎是一个更好的解决方案。
-
managed hosting servers这是一项业务,因此您必须为更多资源付费。但是你说的是redirecting,但是有可能做后台工作吗?喜欢shell_exec('ab.php >> log.log 2>&1 &');还是? -
如果您需要从浏览器操作长时间运行的进程,您应该质疑您的架构。这不是网络的目的。
-
这取决于您要达到的目标。例如,我在处理服务器上的大量繁重文件并将它们发送到存档的客户端时遇到了此类问题,因此我实现了客户端 AJAX 脚本指定的偏移量。这是我最终得到的结果:github.com/stmswitcher/ajax-grabber