Php 睡眠时间是否算作执行时间限制?
关于PHP中的Php 睡眠时间是否算作执行时间限制?,php,sleep,execution,max,Php,Sleep,Execution,Max,关于PHP中的sleep()函数,我有两个问题: 睡眠时间是否会影响PHP脚本的最大执行时间限制?有时,PHP会显示消息“超出了30秒的最大执行时间”。如果我使用sleep(31),是否会显示此消息 使用sleep()功能时是否存在任何风险?它会花费很多CPU性能吗 您应该尝试一下,只要有一个脚本休眠时间超过您的最大执行时间 <?php sleep(ini_get('max_execution_time') + 10); ?> 扰流板:a)是的,它会计入时间限制(因此睡眠(
sleep()
函数,我有两个问题:
sleep(31)
,是否会显示此消息sleep()
功能时是否存在任何风险?它会花费很多CPU性能吗您应该尝试一下,只要有一个脚本休眠时间超过您的最大执行时间
<?php
sleep(ini_get('max_execution_time') + 10);
?>
扰流板:a)是的,它会计入时间限制(因此睡眠(31)将触发错误)
b) 它与降低CPU性能相反——它允许其他应用程序使用CPU(当应用程序休眠时,该应用程序的CPU使用率将接近0%)。除了占用用户的时间之外,我真的想不出使用它有什么风险。它只影响脚本时间,而不影响像sleep()这样的系统调用。显然,在Windows sleep()中包含了一个bug。最大执行时间是关于实时性的,而不是CPU时间或诸如此类的时间。但是,您可以更改它:
- php.ini中的指令。这是一个全球性的环境李>
- 与上述指令一起使用。这将仅针对当前正在执行的脚本更改它,仅针对该执行李>
- :也是本地更改
ini_set('max_execution_time', 60);
将脚本限制为60秒。如果您在20秒后呼叫:
set_time_limit(60);
脚本现在将被限制为20+60=80秒。从中,有以下用户提供的注释:
注意:set_time_limit()函数
和配置指令
最大执行时间仅影响
脚本本身的执行时间。
任何花在这方面的时间
在执行
脚本,例如使用
system(),sleep()函数,
不包括数据库查询等
在确定
脚本一直在运行
其他人已经介绍了sleep()和PHP脚本执行时间限制的基本知识,但是您还应该注意使用很长的睡眠时间时的另一个风险 通常,当浏览器向服务器发送请求但未从服务器接收任何数据时,连接可能会超时。这个时间限制取决于浏览器的配置,但我已经了解到IE7的默认值只有30秒,而--您可以在Firefox中检查自己的配置,方法是转到about:config和filtering for network.http.keep-alive.timeout(时间限制以秒为单位指定)
编辑:我把network.http.keep-alive.timeout和browser.urlbar.search.timeout的单位弄混了。它确实是以秒为单位的,而不是十分之一秒。我猜它确实意味着。。。为什么在PHP中需要一个sleep()?只是想知道。。。请再说原因:我只能每5分钟运行一次cronjobs。所以我想我可以用$waittime=mt_rand(0290);睡眠($waittime)。。。并同时执行代码4次。所以我应该在4个不同的时间点有一个cron。我启动了一些睡眠时间超过100秒的脚本。现在我的网站不再加载了。服务器可能只能同时运行x个脚本,并且有x个脚本处于休眠状态。这可能是真的吗?@marco92w您的主机可能限制了您可以使用的资源量,并且它们可能会将资源计算在线程中。只是补充一下,此行为仅在*nix上显示。在windows上,set_time_limit()每次都获胜。??有6个答案说的大致相同,而我的答案被否决了?这是怎么回事?上面的问题是什么?可能是因为你在否决投票后把答案改成了正确答案。底部没有经过编辑的时间,他怎么能改变呢?我不知道为什么否决了。我是提问者,你很好地回答了我的问题。谢谢@卡尔文:如果你没有注意到的话,他们把它改了几周(或几天),为不编辑历史提供了更大的宽限期。你实际上可以接受他的答案,并为社区服务。我喜欢看到非常简单的答案比一个巨大的段落更能说明问题。我也喜欢扰流板!我认为你的这个答案是一个很好的例子,为什么一个人不应该简单地尝试一个代码片段,而是应该问。谢谢,我以前不知道。我认为必须在1/1秒内指定限制,因为about:config中的值是30。;)啊,你说得对。以秒为单位。但是默认值应该是300秒,而不是30秒,所以您的设置可能被浏览器扩展更改了。