foreach循环函数的问题 有一个处理量庞大的foreach循环,想在中间设定,执行一段时间后停止N秒,再继续执行,不知道怎么写?foreach( ){ foreach( ){ foreach( ){ } }} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个不是很清楚,不知道PHP有没有线程,汗~~ 这是可以实现的,用sleep函数,<?php// current timeecho date('h:i:s') . "\n";// sleep for 10 secondssleep(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; # secondforeach ($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试试 没办法,mysql太容易锁表了,宁可执行得慢些4楼的方法可行,看看大家还有办法没,16点结贴 un*x的话就多线程吧,pcntl_forkwin的话优化一下foreach 里面的咚咚 PHP +MYsql 中 $sql= 跟$sql.=有什么不同呢.我是新手,希望高手解答一下/ oracle,lob类型,多个文件下载? 怎么开启解析错误 这条SQL语句要怎么写呢? 请问javascript能用html页面摹拟中文键盘么? 如何把textarea中的内容写到文本中去,保存原文的空格和回车,从文本中读出的时候显示出原文摸样? 用PHP有没有办法取得访问者的网卡号?硬盘序列号? 请问一个关于数组的简单问题 上传图片是否重复判断! php基础 ||问题 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 里面的咚咚