2012-06-23 28 views
0

我正在处理一个不错的小应用程序。我正在创建一个Tick计数器,以计算程序运行的次数。然而,它随机停止输入数据,如1355 ...我必须让它继续运行,直到它达到5000.但有时它会像5002一样...失去了那一个...我宁愿循环永远运行直到终止。如果任何人都可以帮助我,你会得到一点饼干。总之,我的主要问题是不断地将数据存入数据库,而不是随机停止。MySQL数据库随机停止接收数据?

while($run && $dataA['StateOfBot'] == 1){ 
    if($dataA['Tick'] >= 5000){ 
     mysql_query("UPDATE state SET StateOfBot = 0 WHERE ID = 1;"); 
    } 
    $dataA['Tick'] = $dataA['Tick'] + 1; 
    mysql_query("UPDATE state SET Tick = '".$dataA['Tick']."' WHERE ID = 1;"); 
    $data = mysql_query("SELECT * FROM state"); 
    $dataA = mysql_fetch_array($data); 
} 
+0

超过5000个问题的气味就像同步问题。如果多个线程正在输入可能发生行为的代码段。为什么不把这段代码作为关键部分? – rsan

+0

什么是关键部分?你有一个网站的例子吗? – NateAGeek

+0

忘记吧,它看起来像PHP脚本是单线程,所以我的假设不能是问题 – rsan

回答

0

我觉得你的代码是相当马车

while($run && $dataA['StateOfBot'] == 1){ 
    if($dataA['Tick'] >= 5000){ 
     mysql_query("UPDATE state SET StateOfBot = 0 WHERE ID = 1;"); 
     break; //get out of the loop 
    } 
    $dataA['Tick'] = $dataA['Tick'] + 1; 
    mysql_query("UPDATE state SET Tick = '".$dataA['Tick']."' WHERE ID = 1;"); 
    $data = mysql_query("SELECT onefield_only FROM state"); 
    $dataA = mysql_fetch_array($data); 
} 

我试图修复它一点点。你需要一个break语句才能退出循环。