<?php
while(1){
do something...
}上面这段代码会让服务器崩溃<?php
while(1){
do something...
usleep( 100000);
}这样就不会了这是什么道理呢?
还有usleep这个值设为1行不行?
while(1){
do something...
}上面这段代码会让服务器崩溃<?php
while(1){
do something...
usleep( 100000);
}这样就不会了这是什么道理呢?
还有usleep这个值设为1行不行?
解决方案 »
- 请问杭州达内学PHP怎么样?
- SQL语句写法的问题
- 求!!!!!!!!!!!!PHP页面静态化问题解决方法
- 求:可浮动在线QQ客服的源代码 及详细使用例子
- 如何实现邮箱激活账号!!!!!!
- PHP 如何获取服务器的延迟
- 两条内裤了,散分~~哈
- 求助!!!怎么把变量传递到用window.open()打开的窗口?拜托各位大哥了!!!
- 用PHP单个删除数据,给出了一个confirm提示框,点击取消也能删除是什么原因
- jquery中为什么$.get和$.post里加return false;都阻止不了提交表单?
- ajax如何将返回值赋值给js里面的变量们?
- php+mysql 同一页面多次访问数据库,有什么好的解决方案
以人来比喻,
第一段代码的意思就是让一个人不停的跑,早晚会跑死的.
第二段代码的意思就是让一个人跑一会停一会,所以一直跑下去没有任何问题.
usleep参数是microseconds, 1000000ms = 1s,所以你改成1和第一段代码基本上没有区别了.
现代OS一般都是可抢占的,执行php死循环程序时,可以被抢占OS调度器,如果发现有处于TASK_RUNNING却没有得到时间片的进程,会等php时间片用完时,强制将其
剥离CPU,并且调整动态优先级,放入到相应运行队列,然后取一个其它的等待时间片的进程,放入到CPU。时钟中断会让OS定时执行调度工作的,不管用户进程是否愿意,都不得的下来。
这个时钟中断的周期,跟HZ有关,所以编译内核时,调整HZ也是门学问,
大时间片有更大吞吐量,但是响应时间却更长了,小时间片响应很快,但是吞吐量下去了。用户态程序无论怎么死循环,都搞不掉系统。