我有一个用php编写的函数insertdata()。它从一个数据库表中获取值,然后将其插入另一个数据库表中。
我希望以固定的时间间隔重复此操作,直到单击停止按钮。 请帮帮我..
我尝试使用setInterval,但它只运行一次。 我也用
if(isset($_POST['stopbutton']))
$stop=1;
else
$stop=0;
function insertdata(){
while ($stop=0) {
//get the values from Table1 and insert it into Table2
}
sleep(1);
if ($stop==1)
echo stop;
}
请帮帮我..
答案 0 :(得分:0)
您需要继续检查$stop
变量。提交帖子后,您的应用程序不会知道,因为已经调用了if语句。你可以通过在while循环中检查它来解决这个问题。
答案 1 :(得分:0)
如果您这样做,基本上会发生这种情况:
CLIENT | SERVER
|
+--------+
| | stop = 0
| *----|--------> +------+
| | | loop |
| | | |
| | | |
| | | |
| | | | stop = 0
| *----|---------------------------> +------+
| | | | | loop |
| | | | | |
| | | | | | stop = 1
| *----|---------------------------------------------> +------+
| | | | | | | stop |
+--------+ | | | | +------+
+------+ | |
| |
| |
+------+
在每次调用服务器端脚本时,$stop
的值永远不会改变。
您要做的只是在服务器端的每次运行中执行一次移动操作,并让客户端每隔一秒执行一次请求。
您的任务是跟踪您在移动操作中的位置并将其与客户端同步。
答案 2 :(得分:0)
试试这段代码。它正在发挥作用。
已编辑的代码
repeatInsert.php
<?php
if(isset($_POST['stopbutton']))
{
echo "Stopped";
exit;
}
if(isset($_POST['startbutton']))
{
insertdata();
exit;
}
function insertdata(){
//Insert code here
}
?>
<html>
<head>
<title>Repeated Insert</title>
</head>
<body>
<input type="button" value="Start Insert" name="startbutton" onclick="start();" />
<input type="button" value="Stop Insert" name="stopbutton" onclick="stopInsert();" />
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript">
var intervals;
$(document).ready(function(){
});
function start()
{
startInsert();
intervals = setInterval(startInsert, 1000);
}
function startInsert() {
$.ajax({
type: "POST",
url: "repeatInsert.php",
data: {startbutton : true},
success: function(){
},
dataType: "json"
});
}
function stopInsert() {
clearInterval(intervals);
$.ajax({
type: "POST",
url: "repeatInsert.php",
data: {stopbutton : true},
success: function(){
},
dataType: "json"
});
}
</script>
</body>
</html>