1

如果我<?php sleep(60); ?>在我的脚本中使用 30 次会有什么问题,以便脚本将在 30 分钟内加载并完成其工作,是否有任何问题的可能性?
注意:如果失败,有什么办法可以这样做吗?

4

3 回答 3

2

客户端可能会停止侦听响应,但脚本仍有可能完成执行。不过,您必须配置您的 PHP 安装以延长执行时间。

如果您使用浏览器和 AJAX 请求将在 30 分钟后返回的数据,最好轮询静态资源。

当您想要启动脚本时,向它发送一个 AJAX 请求。这个请求最终会超时。设置您的脚本,以便在完成后将其输出保存到静态资源(文本文件/图像/等;取决于您的脚本应该返回的内容)。使用 AJAX 每五分钟轮询一次该资源,当它准备好时,您将得到服务器的响应。

于 2012-12-09T10:10:50.903 回答
0

如果您调用sleep(60)30 次或sleep(60 * 30)一次,则没有区别。

看一下 php 函数set_time_limit,因为标准是 30 秒左右。之后,您的脚本将被终止。

不过,不知道有没有浏览器愿意等这么久才收到你的请求。你想达到什么目的?

于 2012-12-09T10:10:46.707 回答
0

这个想法有几个问题。

  • sleep 将以下代码或下一个循环的执行延迟n几秒钟。这将在您的脚本“自然”运行时间之上,因此总执行时间将为( sleep(s) * times called ) + execution_time
  • 在 cgi 环境或 php apache 模块中执行脚本时,默认情况下您有max_execution_time30 秒的时间,之后您的脚本将停止执行。在 CLI 上,默认值为 0 =~ 无限制。 http://php.net/manual/en/info.configuration.php#ini.max-execution-time

  • 最后,如评论中所述,如果您的脚本是从浏览器调用的,则网络服务器将更早地运行超时。

于 2012-12-09T10:25:12.940 回答