Isset post和break for loop

时间:2011-11-07 19:37:50

标签: php javascript

我有以下代码

for ($p=1; $p<30000; $p++) {

    if(isset($_POST['stop_loop'])) {
       break;
    }

    loop do something

}

我的问题是在发布stop_loop后如何停止循环?

也许我应该使用die();但我尝试,它没有任何作用吗? 如果没有,也许Neal是对的

5 个答案:

答案 0 :(得分:3)

您可以在代码开头获得所有帖子值。

因此,如果那个POST开始,则for循环永远不会执行。

您无法向已经执行的php文件提交帖子

答案 1 :(得分:3)

考虑让一些文件充当信号量。然后你在上面发布的for循环只会在每次迭代时检查这个文件是否存在。如果存在,请停止循环。否则,继续处理。

例如,此伪代码可能有效:

if "post variable" = "stop loop"
    create file "stop loop"
else
    while file "stop loop" does not exist
        do something

答案 2 :(得分:2)

似乎很痛苦。为什么没有

$stop_point = isset($_POST['stop_loop']) ? $_POST['stop_loop'] : 30000;

for ($p = 1; $p < $stop_point; $p++) {
    loop do something
}

代替? POST值在脚本启动时设置(并且您实际上已将表单发布到此脚本),因此$_POST['stop_loop']的值在脚本的整个生命周期内都不会更改。

答案 3 :(得分:1)

如果你在“循环做某事”中设置某个地方

 $_POST['stop_loop'] = true;

它会破裂。

答案 4 :(得分:0)

以这种方式解决这个问题并不可行。你需要两个脚本。一个运行循环,另一个运行。

在第一个脚本中,您应该检查数据库或平面文件中存在的内容。

第二个脚本应该生成您要检查的项目。

例如:

脚本A检查文件,例如stopLoop.file 当你将stop发布到脚本B时,它会创建文件stopLoop.file

我不会这样做,因为所有这些文件检查都会减慢脚本的速度,但是你明白了这一点。