睡眠时间是否计入执行时间限制?

caw*_*caw 50 php sleep max execution

关于sleep()PHP中的函数我有两个问题:

  1. 睡眠时间是否影响我的PHP脚本的最大执行时间限制?有时,PHP会显示消息"超过30秒的最大执行时间".如果我使用,会显示此消息sleep(31)吗?

  2. 使用该sleep()功能时有任何风险吗?它是否会耗费大量CPU性能?

Sam*_*uel 87

你应该尝试一下,只需要一个睡眠时间超过最长执行时间的脚本.

<?php
  sleep(ini_get('max_execution_time') + 10);
?>
Run Code Online (Sandbox Code Playgroud)

Spoiler:在Linux下,睡眠时间被忽略,但在Windows下,它被视为执行时间.

  • 您实际上可以接受他的答案,并为社区提供服务. (3认同)
  • 我认为您的答案是一个很好的例子,为什么我们不应该简单地尝试一个代码片段而是应该问一个问题。 (3认同)
  • 我喜欢看到非常简单的答案,这些答案在说明方面比一个大段落做得更好。也喜欢剧透! (2认同)

cle*_*tus 8

它只影响脚本时间而不影响睡眠()等系统调用.显然有一个错误,其中包括Windows sleep().最大执行时间大约是实时,而不是CPU时间或类似的东西.你可以改变它:

至于最后两个之间的差异,我认为max_execution_time是一个固定的数量.运行:

ini_set('max_execution_time', 60);
Run Code Online (Sandbox Code Playgroud)

将脚本限制为60秒.如果在20秒后你打电话:

set_time_limit(60);
Run Code Online (Sandbox Code Playgroud)

该脚本现在将限制为20 + 60 = 80秒.

  • 底部没有编辑时间,他怎么能改变它? (4认同)

kar*_*m79 7

PHP sleep()页面,这是用户提供的注释:

注意:set_time_limit()函数和配置指令max_execution_time仅影响脚本本身的执行时间.在确定脚本运行的最长时间时,在执行脚本之外发生的任何活动(例如使用system()的系统调用,sleep()函数,数据库查询等)都不包括在内.