我可以睡觉吗(60);在脚本中

时间:2012-12-09 10:06:29

标签: php

如果我在我的脚本中使用<?php sleep(60); ?> 30次有问题,那么脚本将在30分钟内加载并完成其工作,是否有可能出现问题?
注意:如果失败,有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

如果您拨打sleep(60) 30次或sleep(60 * 30)一次,则没有任何区别。

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

但是,我不知道是否有浏览器愿意等待你的请求。你想要实现什么目标?

答案 2 :(得分:0)

这个想法有几个问题。

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

  • 最后,正如评论中所述,如果您的脚本是从浏览器调用的,那么网络服务器会在更早的时候停止运行。