2012-06-23 63 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語句才能退出循環。