函数在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
}
取决于你如何想这样做真的。您可以将其存储在数据库中,只需在页面的部分显示您之后的数字即可。您必须添加查询以更改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
部分,因为它会返回并为空的段落。
那么,如果你在电脑前12h做循环哈哈会发生什么。 感谢您的回答...我不相信我没有想到数据库T_T – user1033882
哈哈不要汗水,它发生的人=)我倾向于坐下来看问题几个小时,然后继续前进,只是写在数据库:D –
对此文章提出问题 – sergio
oops ..当我编写代码时,它已被删除...抱歉,现在编辑它。编辑:我在这里突出显示 – user1033882