我有两个问题 sleep() 功能在PHP:

  1. 不会睡眠时间影响的最大的执行时间限制,我PHP scripts?有时,PHP显示消息"最大执行时间为30秒钟超过了".将这个消息显示,如果我使用 sleep(31)?

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

有帮助吗?

解决方案

你应该尝试一下,只是有一个脚本睡超过你的最大的执行时间。

<?php
  sleep(ini_get('max_execution_time') + 10);
?>

的扰流: 在Linux,睡觉时被忽略,但在窗户,它计数为执行时间。

其他提示

它不仅影响到剧本的时间不系统调样sleep().那里显然是一个错误,在Windows sleep()包括在内。最大的执行时间大约是现实的时间,不CPU时或类似的东西。你可以改变它,但是:

  • max_execution_time 指令在你php.ini。这是一个全球性的设置;
  • 使用 ini_set() 与上述指令。这将会改变它仅适用于当前正在执行的脚本只为,执行;
  • set_time_limit():还有一个地方的改变。

作为之间的差的最后两个,我相信max_execution_time是一个固定的数量。运行:

ini_set('max_execution_time', 60);

将限制向脚本到60秒。如果20秒后,你呼叫:

set_time_limit(60);

脚本现在将仅限于20+60=80秒。

PHP sleep()页, 有个用户提供的注意:

注:The set_time_limit()function 和配置指令 max_execution_time仅影响 执行时间脚本本身。任何花费的时间上的活动, 发生之外的执行 剧本如电话系统使用 system(),the sleep()function, 数据库查询,等等。不包括 在确定的最长时间 剧本已经运行。

其他人已经复盖的基本知识sleep()and PHP script执行时间限制,但是你也应该知道另一个风险时使用很长时间的睡眠时期。

通常,当浏览器发送请求到服务器并没有收到任何数据服务器,可以连接时间。这种时间限制取决于浏览器的配置,但是我已经阅读,IE7默认值只有30秒的同时 Firefox已经默认值的115秒-你可以检查你自己的配置在火狐去 关于:配置 和筛选 网络。http。保持活力。超时 (时间限制的指定秒)。

编辑:我有的单位的网络。http。保持活力。超时和浏览器。址栏.搜索。超时混在一起。这的确是几秒钟内,没有十分之一秒钟。

a)是的,它将计入的时间限制(所以睡(31)将触发一个错误)

b)它没有相反的成本计算性能-它可以让的其他应用中使用的CPU(当应用程序睡觉,占用该应用程序将接近0%).除了把时间用户,我真的不能认为任何风险。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top