函数在foreach循环后返回一个页面(在PHP中)

函数在foreach循环后返回一个页面(在PHP中)

问题描述:

我正在编写一个foreach循环,它将解析目录/子目录/文件,并在基于巨大数组的文件中搜索和替换值。 这将需要一些时间....大概在10分钟左右...我想知道如果有一种方式与PHP,AJAX也许,当我去的页面,它会告诉我这个(例如)函数在foreach循环后返回一个页面(在PHP中)

还剩X值的数字。

并且该数字将在每个循环中减少foreach结束。

所以基本上我有:

foreach ($array as $key => $value) { 
    $contents = file_get_contents($file); 
    foreach (new RecursiveIteratorIterator($di) as $filename => $file) { 
    {do stuff here} 
    } 
$param--; // to report back to the page 
} 
+0

对此文章提出问题 – sergio

+0

oops ..当我编写代码时,它已被删除...抱歉,现在编辑它。编辑:我在这里突出显示 – user1033882

取决于你如何想这样做真的。您可以将其存储在数据库中,只需在页面的部分显示您之后的数字即可。您必须添加查询以更改foreach中的号码。所以说,你做这样的:

<?php 
$now = date("Y-m-d"); 
$getnum = $db->query("SELECT Num FROM mytable WHERE Jobtime = '$now'"); 
$result = $getnum->fetch(); 
$whatyouwant = $result['Num']; 

if($whatyouwant > 0) { ?> 

<p class="whatyouwant" id="whatyouwant"> <?php echo $whatyouwant;?> </p> 

<?php } ?> 

,改变你的foreach做这样的事情:

foreach ($array as $key => $value) { 
    $contents = file_get_contents($file); 
    foreach (new RecursiveIteratorIterator($di) as $filename => $file) { 
    {do stuff here} 
    } 
$updatestuff = $db->query("UPDATE mytable SET Num = '$param' WHERE Jobtime = '$now'"); 
} 

这样做的缺点是,你必须重新加载页面以获取信息。为了绕过这个,我可以让我的答案的第一部分在AJAX中运行。所以,你会怎么做:

var reloadFunction = function() { 
    $.get("getnum.php", function (result) { 
     $('#holdingwhatyouwant').html(result); 
    }); 
}; 
$(document).ready(function() { 
    reloadFunction(); 
    setInterval(reloadFunction, 10000); 
    }); 

如果你这样做,你需要以纪念它的地方你的页面上,如:

<div id="holdingwhatyouwant"></div>

为什么?由于局限。如果您使用第一种方法,并将该代码放在页面上,则需要重新加载页面以查看更新。如果你只使用ajax(与我在这里写的类似),你需要保持页面打开才能工作,并且有一个处理程序(ajax需要发送数据到php以便能够知道进程等,所以阿贾克斯必须触发你的功能)。综合使用它们都很好。如果你重新加载页面,你会立即得到信息,如果你不知道,你会每10秒钟收到一次。注意10000毫秒的时间间隔。请注意,您不需要php的if部分,因为它会返回并为空的段落。

+0

那么,如果你在电脑前12h做循环哈哈会发生什么。 感谢您的回答...我不相信我没有想到数据库T_T – user1033882

+0

哈哈不要汗水,它发生的人=)我倾向于坐下来看问题几个小时,然后继续前进,只是写在数据库:D –