PHP 延迟执行的问题?
去网上查了,首先是sleep系列(sleep/usleep/nanosleep/time_sleep_until)的函数,首先这些函数有个问题,sleep是当前进程挂起,比如:
echo time();
sleep(10);
echo time();
其实是【 等了10秒 】之后,【 再同时 】显示两个时间戳,时间戳之间相差10秒。
而我想要的效果是先显示第一个时间戳,等10秒,再显示第二个时间戳。
于是:
我想要用无限循环,然后判断当前时间与预存时间之间的差值来break出当前的死循环。比如:
for(100遍){
//一些操作
$start = time();
while(true){
if(time() - $start == 1)break;
}
}
意思for循环每执行一次,末尾都会进入死循环,然后隔了1秒跳出死循环,继续下一次for循环。
但是,但是,居然是死循环!!!
后来试了下:
while(true){
echo time();
}
居然不变!!!而 echo 出 date('s') 是变的!!!
所以想问:
1、如果说需要满足延迟执行的需求,不要sleep,不要线程,单纯就是暂停下再执行(其实我是做的爬虫,频率高了会被302),除了上面死循环的方式还有其它方式吗?(不要 AJAX,仅是 PHP 端)
2、为什么那个 time() 不变?
mizuka
9 years, 5 months ago