下面是这段代码
for ($p=1; $p<30000; $p++) {
if(isset($_POST['stop_loop'])) {
break;
}
loop do something
}
我的问题是如何停止循环后,我张贴stop_loop?
也许我应该使用die();但我试过了,但没有用,有什么办法吗?如果不是,也许Neal是对的
您将在代码开始处获得所有post值。
因此,如果POST是从那里开始的,那么for循环将永远不会执行。
你不能提交一个已经在执行的php文件
考虑使用某个文件作为信号量。然后,上面发布的for循环将在每次迭代时简单地检查该文件是否存在。如果存在,则停止循环。否则,继续处理
例如,以下伪代码可以工作:
if "post variable" = "stop loop"
create file "stop loop"
else
while file "stop loop" does not exist
do something
似乎……痛苦的。
$stop_point = isset($_POST['stop_loop']) ? $_POST['stop_loop'] : 30000;
for ($p = 1; $p < $stop_point; $p++) {
loop do something
}
?POST值是在脚本启动时设置的(实际上您已经向该脚本发送了一个表单),因此$_POST['stop_loop']
的值在脚本的整个生命周期中不会改变。
如果你在"loop do something"
$_POST['stop_loop'] = true;
用这种方法处理这个问题并不可行。您将需要两个脚本。一个运行循环,另一个发送到。
在第一个脚本中,您应该检查数据库或平面文件中是否存在某些内容。
第二个脚本应该使您正在检查的项。
例如:script A检查文件,例如stopop .file当您将stop发送到脚本B时,它会创建文件stopploop .file
我不会完全这样做,因为所有这些文件检查会减慢脚本的速度,但你在这里明白了。