有一个处理量庞大的foreach循环,想在中间设定,执行一段时间后停止N秒,再继续执行,不知道怎么写?foreach( ){
foreach( ){
foreach( ){
}
}
}
foreach( ){
foreach( ){
}
}
}
解决方案 »
- 怎么设置密码重置链接的有效期
- PHP编程,表单查询数据后,数据特定显示方式求解?
- php 发送邮件报错
- php的内容管理系统的尴尬境地。。。
- 请教一个正则匹配的问题
- PHP能选择下拉框或者文本框失去焦点后进行MYSQL查询吗?
- cookie欺骗问题
- *.html和*.php(无数据库操作)速度会相差多少?
- 用哪位兄弟在LINUX下使用PHP吗?帮帮我!
- 从表单上传上来的图片,我想将它存到服务器的某个目录,并将连接存入mysql,以便在浏览器中能够根据数据库的内容动态的显示图片,并且还想
- phpStudy 2010安装后启动不了Apache了
- 同時連接2個mysql庫的問題 ,請高手幫忙看一下 急
<?php// current time
echo date('h:i:s') . "\n";// sleep for 10 seconds
sleep(10);// wake up !
echo date('h:i:s') . "\n";?>
先在所有foreach之前加入:$limit=5;
$start=time();
再在最中间那个foreach中加入:if(time()-$start==$limit)
sleep(2);不知这样是否可行?
$arr = array(
0=>array("21"=>1,"19"=>1, "3"=>1),
1=>array("19"=>2,"3"=>2),
2=>array("21"=>3,"19"=>3),
3=>array("25"=>4),
4=>array("25"=>5,"19"=>5)
);$merge = $sum = array();
foreach ($arr as $row)
{
$merge = array_unique(array_merge($merge,array_keys($row)));
}$step = 0; # 0-100
$start = time() - $step;
$interval = $sleep = 0.0000001; # second
foreach ($arr as $row)
{
foreach ($merge as $key)
{
if (!isset($sum[$key])) $sum[$key]=0;
$sum[$key] += isset($row[$key]) ? $row[$key] : 0; if (time() - $start > $interval)
{
echo "sleep....\n";
sleep($sleep);
}
}}
var_export($sum);exit;自己调整下step的大小。。由于程序执行很快,想看效果的话,改成100试试
4楼的方法可行,看看大家还有办法没,16点结贴
win的话优化一下foreach 里面的咚咚