如果我<?php sleep(60); ?>
在我的脚本中使用 30 次会有什么问题,以便脚本将在 30 分钟内加载并完成其工作,是否有任何问题的可能性?
注意:如果失败,有什么办法可以这样做吗?
3 回答
客户端可能会停止侦听响应,但脚本仍有可能完成执行。不过,您必须配置您的 PHP 安装以延长执行时间。
如果您使用浏览器和 AJAX 请求将在 30 分钟后返回的数据,最好轮询静态资源。
当您想要启动脚本时,向它发送一个 AJAX 请求。这个请求最终会超时。设置您的脚本,以便在完成后将其输出保存到静态资源(文本文件/图像/等;取决于您的脚本应该返回的内容)。使用 AJAX 每五分钟轮询一次该资源,当它准备好时,您将得到服务器的响应。
如果您调用sleep(60)
30 次或sleep(60 * 30)
一次,则没有区别。
看一下 php 函数set_time_limit,因为标准是 30 秒左右。之后,您的脚本将被终止。
不过,不知道有没有浏览器愿意等这么久才收到你的请求。你想达到什么目的?
这个想法有几个问题。
- sleep 将以下代码或下一个循环的执行延迟
n
几秒钟。这将在您的脚本“自然”运行时间之上,因此总执行时间将为( sleep(s) * times called ) + execution_time
在 cgi 环境或 php apache 模块中执行脚本时,默认情况下您有
max_execution_time
30 秒的时间,之后您的脚本将停止执行。在 CLI 上,默认值为 0 =~ 无限制。 http://php.net/manual/en/info.configuration.php#ini.max-execution-time最后,如评论中所述,如果您的脚本是从浏览器调用的,则网络服务器将更早地运行超时。